У меня есть метод onUpdate (...) класса MyAppWidgetProvider с кодом:
...
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!?