Виджет Android предназначен - PullRequest
       22

Виджет Android предназначен

0 голосов
/ 05 сентября 2010

У меня есть класс виджетов и класс обслуживания, обновляющий виджет.

Я добавил в класс виджетов в onUpdate () следующий код:

  RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.countdownwidget);
  Intent Intent1 = new Intent(Intent.ACTION_MAIN);
  Intent1.addCategory(Intent.CATEGORY_LAUNCHER);
  PendingIntent pendingIntent1 = PendingIntent.getActivity(context, 0, Intent1, 0);
  views.setOnClickPendingIntent(R.id.button1, pendingIntent);

  Intent Intent2 = new Intent(Intent.ACTION_MAIN);
  Intent2.addCategory(Intent.CATEGORY_LAUNCHER);
  PendingIntent pendingIntent2 = PendingIntent.getActivity(context, 0, Intent2, 0);
  views.setOnClickPendingIntent(R.id.button2, pendingIntent2); 

И я также добавил следующий код в службу виджетов в onStart ()

    Intent Intent1 = new Intent(Intent.ACTION_MAIN);

    Intent1.addCategory(Intent.CATEGORY_LAUNCHER);
    PendingIntent pendingIntent1 = PendingIntent.getActivity(getApplicationContext(), 0, Intent1, 0);
    remoteView.setOnClickPendingIntent(R.id.button1, pendingIntent1);

    Intent Intent2 = new Intent(Intent.ACTION_MAIN);
    Intent2.addCategory(Intent.CATEGORY_LAUNCHER);
    PendingIntent pendingIntent2 = PendingIntent.getActivity(getApplicationContext(), 0, Intent2, 0);
    remoteView.setOnClickPendingIntent(R.id.button2, pendingIntent1);

Проблема, с которой я столкнулся, заключается в том, что, как только неявное намерение регистрирует приложение для запуска на button1, button2 становится идентичным button1. Как я могу заставить 2 намерения вести себя по-разному? Т.е. зарегистрировать и запустить разные приложения. Работает с одной кнопкой, но с другой кнопкой запускается то же самое, что и с первой кнопкой. Я искал, чтобы это работало в течение последней недели, читая все подряд, но без результата. Буду признателен за вашу помощь. Спасибо.

1 Ответ

0 голосов
/ 05 сентября 2010

Проблема, с которой я столкнулся, заключается в том, что, как только неявное намерение регистрирует приложение для запуска на button1, button2 идентично кнопке 1.

Ну, конечно. Все четыре ваших Intents идентичны: ACTION_MAIN, CATEGORY_LAUNCHER, и больше ничего не указано. Я удивлен, что Intent даже работает.

Итак, первый шаг к тому, чтобы кнопки делали разные вещи, - это на самом деле разные Intents.

Также, пожалуйста, не используйте getApplicationContext(). Просто используйте this, так как Service является Context.

...