我在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/