Как управлять кнопкой в ​​приложении из ее виджета в Android - PullRequest
0 голосов
/ 26 ноября 2018

В моем проекте я должен контролировать Button приложения из его Widget.При нажатии punch-in Button в Widget он должен работать как punch-in Button в приложении.

Ниже приведен мой код, поэтому я создал приложение, которое имеетдва Button и Widget.Виджет имеет два Button и TextView.При первом нажатии Button из Widget (openApp) откроется приложение, вторая кнопка приведет нас на главную страницу Google.

MainActivity.java:

public class MainActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setContentView(R.layout.activity_main);
        final Button testButton = (Button) findViewById(R.id.btnPunchIn);
        Button checkIn = (Button) findViewById(R.id.btnCheckIn);
        testButton.setTag(1);

        testButton.setText("Punch In");
        testButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final int status = (Integer) v.getTag();
                if (status == 1) {

                    Toast.makeText(MainActivity.this, "Punched In", Toast.LENGTH_LONG).show();
                    testButton.setText("Punch Out");
                    testButton.setBackgroundDrawable(getResources().getDrawable(R.color.colorPrimary));
                    v.setTag(0); // punch in


                   } else {

                    testButton.setText("Punch In");
                    testButton.setBackgroundDrawable(getResources().getDrawable(R.color.colorAccent));
                    v.setTag(1); //punch out

                }
            }
        });
    }

    public void CheckIn(View view) {
        Toast.makeText(MainActivity.this, "customer checked in", Toast.LENGTH_LONG).show();
    }
}

MywidgetProvider.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#09C"
    android:padding="@dimen/widget_margin"
    >

    <Button
        android:id="@+id/btnOpenApp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="187dp"
        android:text="OpenApp" />

    <Button
        android:id="@+id/btnOpenweb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="204dp"
        android:text="goto" />


</RelativeLayout>

MywidgetProvider.java

/**
 * Implementation of App Widget functionality.
 */
public class MywidgetProvider extends AppWidgetProvider {

    static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
                                int appWidgetId) {

        RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.mywidget_provider);

        String text = "data :" + new Random().nextInt(1000);
        views.setTextViewText(R.id.textView2,text);

        Intent openApp = new Intent(context,MainActivity.class);
        PendingIntent pIntent = PendingIntent.getActivity(context,0,openApp,0);

        views.setOnClickPendingIntent(R.id.btnOpenApp,pIntent);

        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.googlr.com"));
        PendingIntent myPIntent = PendingIntent.getActivity(context,1,intent,0);

        views.setOnClickPendingIntent(R.id.btnOpenweb, myPIntent);

        appWidgetManager.updateAppWidget(appWidgetId,views);

    }

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        // There may be multiple widgets active, so update all of them
        for (int appWidgetId : appWidgetIds) {
            updateAppWidget(context, appWidgetManager, appWidgetId);

        }
    }

    @Override
    public void onEnabled(Context context) {
        // Enter relevant functionality for when the first widget is created
    }

    @Override
    public void onDisabled(Context context) {
        // Enter relevant functionality for when the last widget is disabled
    }
}

Я хочу добиться этого, когда я нажимаю Button (регистрацию) из моего Widget, приложенияследует запустить код в методе checkIn в MainActivity.Кто-нибудь может мне помочь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...