推出ActivityManager.RunningTaskInfo.topActivity我的onUpdate(...)的代碼MyAppWidgetProvider類的梅託德:無法從安卓的AppWidgetProvider
...
Intent launchAppIntent = new Intent(context, SearchActivity.class);
PendingIntent launchAppPendingIntent = PendingIntent.getActivity(context, 0, launchAppIntent, 0);
remoteView.setOnClickPendingIntent(R.id.logo, launchAppPendingIntent);
...
它工作正常。新的SearchActivity通過點擊小部件開始。現在,我想開始點擊不是SearchActivity,而是從我的任務堆棧頂部開始的一項活動。爲此,我將以上代碼更改爲:
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(30);
for (ActivityManager.RunningTaskInfo task:tasks) {
if (task.baseActivity.getShortClassName().equals(".MainActivity")) {
try {
Intent launchAppIntent = new Intent(context, Class.forName(task.topActivity.getClassName()));
PendingIntent launchAppPendingIntent = PendingIntent.getActivity(context, 0, launchAppIntent, 0);
remoteView.setOnClickPendingIntent(R.id.logo, launchAppPendingIntent);
} catch (ClassNotFoundException ex) {
Logger.getLogger(CashWidgetProvider.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
不起作用。任務堆棧中的前臺活動不顯示在監視器上。而且,我在運行此代碼的日誌中沒有收到任何消息。
但是,相同的代碼可以很好地放置在繼承自Activity的類的某些方法中。
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(30);
for (ActivityManager.RunningTaskInfo task:tasks) {
System.out.println(task.baseActivity.getShortClassName());
if (task.baseActivity.getShortClassName().equals(".MainActivity")) {
try {
Intent launchAppIntent = new Intent(this, Class.forName(task.topActivity.getClassName()));
startActivity(launchAppIntent);
} catch (ClassNotFoundException ex) {
Logger.getLogger(AbstractActivity.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
我怎樣才能讓它爲AppWidget工作?