Android从Widget调用Activity特定功能

时间:2013-09-17 14:09:55

标签: android android-widget

我在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);

...

此代码将仅启动主Activity,但我想从主要活动中调用test()函数 我该怎么办? 我正在尝试使用getExtra,但它无效。

1 个答案:

答案 0 :(得分:1)

为什么不使用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);
 }