android: виджет приложения :: Как передать непостоянные данные в сервис из виджета

1

После долгих усилий в этом, я наконец спрашиваю. У меня есть виджет с текстом, кнопкой и изображением. оба представления загружаются из предпочтения. Я могу запустить myActivityA, когда пользователь нажимает на textview и myActivityB, когда пользователь нажимает на изображение из виджета. Но не удалось получить onclick-событие (в сервисе) для кнопки. Я делаю это следующим образом.

Класс MyWidgetProvider

final ComponentName serviceName = new ComponentName(context, "com.mypkg.MyService");
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_main);
Intent intent = new Intent(Service.TOGGLE_ACTION);
intent.setComponent(serviceName);
PendingIntent pendingIntent = PendingIntent.getService(context,0 /* no requestCode */, intent, 0 /* no flags */);
remoteViews.setOnClickPendingIntent(R.id.widget_button1, pendingIntent); 

В классе MyService,

// broadcast message receiver for commands to service.
private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() 
{
@Override
public void onReceive(Context context, Intent intent) 
{
    String action = intent.getAction();
            String cmd = intent.getStringExtra("Command");

            if (TOGGLE_ACTION.equals(action)) 
            {
                m_iKey = intent.getIntExtra("MyService.MyKey", 0);

    // call functions defined in MyService.

            }
}
};

Моя проблема в том, что я не могу TOGGLE_ACTION получить TOGGLE_ACTION. OnStartCommand вызывается в MyService,

Может ли кто-нибудь предположить, что может быть проблемой?

То, что именно я хочу от события нажатия кнопки, - это... Если служба не запущена (услуга запускается в первом TOGGLE_ACTION, срок службы теперь ограничен активностью), тогда запустите ее... и TOGGLE_ACTION должен быть выполнен. Служба IF уже запущена (значит, моя активность минимизирована), тогда TOGGLE_ACTION должен быть выполнен.

Есть ли другой способ достичь этого? Или другим способом передать некоторые данные и вызвать некоторую рутину обслуживания из виджета?

Теги:
android-appwidget

1 ответ

0

попробуй это,

Intent intent= new Intent(context, myActivityB.class);
PendingIntent pending=PendingIntent.getActivity(context, 0 , intent,PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.button, pending); 

R.id.button - это ваша кнопка Id.

  • 0
    Спасибо Jeeva, на событие нажатия кнопки я не хочу начинать деятельность. Я хочу выполнить или интимную процедуру, определенную в Сервисе.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню