2010-09-05 5 views
-1

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

Я добавил в класс виджета в 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); 

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

ответ

0

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

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

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

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

+0

Как мне изменить свой код, чтобы ваши намерения были разными? – John

+0

@John: Я не знаю вашего приложения. Я не знаю, какими должны быть правильные намерения. – CommonsWare

+0

Я пытаюсь иметь две кнопки, каждая из которых имеет неявное намерение, которое запустит диалог выбора (как это делает) и позволит пользователю выбрать действие по умолчанию для каждой кнопки. – John