安卓多按钮小工具:按下安卓主页刹车小工具按钮识别



我有一个带有2个按钮的简单小部件。单击任何小部件按钮都应该打开相同的活动,但使用不同的参数。一切都很好:单击按钮1打开一个活动并传递参数1,单击按钮2打开一个行动并传递参数2。我检查通过的参数:

getIntent().getStringExtra("mode")

当我按下安卓主页按钮关闭应用程序时,问题就开始了——之后应用程序流无法识别按下了哪个按钮。但如果我用"后退"按钮关闭应用程序,一切都很好。

我的猜测是,在按下Home并单击其中一个小部件按钮后,将使用最近的意图,而不是使用与单击的按钮对应的意图。

到目前为止我尝试过的:

  1. 尝试通过intent.setAction()将操作添加到intets
  2. 尝试了所有可能的标志,而不是FLAG_CANCEL_CURRENT
  3. 尝试过的活动启动模式:单顶和单任务。单一任务还有其他问题,所以我坚持使用单一顶部

以下是更新代码:

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_home);
Intent intent1 = new Intent(context, MainActivity.class);
intent1.putExtra("mode", "1");
Intent intent2 = new Intent(context, MainActivity.class);
intent2.putExtra("mode", "2");
PendingIntent pendingIntent1 = PendingIntent.getActivity(context, 0,
intent1, PendingIntent.FLAG_CANCEL_CURRENT);
PendingIntent pendingIntent2 = PendingIntent.getActivity(context, 1,
intent2, PendingIntent.FLAG_CANCEL_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.button1, pendingIntent1);
remoteViews.setOnClickPendingIntent(R.id.button2, pendingIntent2);
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
}

清单:

<receiver
android:name="com.testwidgetbuttons.HomeWidgetProvider"
android:icon="@drawable/ic_launcher"
android:label="Example Widget" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget" />
</receiver>

Widget xml:

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/widget_home"
android:minHeight="72dp"
android:minWidth="146dp"
android:updatePeriodMillis="1800000" >
</appwidget-provider> 

请告知。谢谢

由于按下主页按钮时活动仍在运行,因此启动MainActivity的意图不会通过活动的onCreate()方法读取。

如上所述,在将新意图传递到现有活动实例中时,请改用Activity.onNewIntent()

如果您希望完成并重新创建以前的任何实例,则可能需要在意图中指定FLAG_ACTIVITY_CLEAAR_TOP启动标志。

最新更新