我在AppWidgetProvider类中遵循以下代码:

@Override
    public void onUpdate(
....
  Intent mainIntent = new Intent(ctxt, MainActivity.class);
        mainIntent.putExtra("testExtra",true);
        PendingIntent pendingIntent = PendingIntent.getActivity(ctxt, 0, mainIntent, 0);
        widget.setOnClickPendingIntent(R.id.buttonAddwidget, pendingIntent);

...


此代码将仅启动主活动,但我想从主活动中调用test()函数。
我该怎么做?
我正在尝试使用getExtra,但是它不起作用。

最佳答案

为什么不使用putExtra向事件添加一些数据-可能是布尔标志或类似的东西。

然后,在onCreate()中,您可以检查意图中数据的存在(您可以使用getIntent()访问该数据),并调用一个函数(如果存在)。

编辑

使用上面提供的更新的代码(包括附加内容),然后需要在onResume中的MainActivity.class函数中执行类似以下的操作。

if (getIntent().getBooleanExtra("textExtra"))
    doSomeFunction();


getIntent()应该给您打电话的意图。如果这不起作用,则可能与您活动的launchMode设置有关,您可能必须重写onNewIntent()方法以获取意图。

编辑2

尝试将以下代码添加到您的活动中。它的作用是处理活动不是由意图创建的时间,因此getIntent()将返回用于首先创建活动的意图,而不是用于返回新活动的意图(包含附加项)。它将意图设置为新意图,以便在onResume()中可以访问更多意图。

 @Override
 protected void onNewIntent(Intent intent) {
     //called when the activity is relaunched by a new intent
     setIntent(intent);
     super.onNewIntent(intent);
 }

关于android - Widget的Android通话 Activity 特定功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18852222/

10-12 03:18