После долгих усилий в этом, я наконец спрашиваю. У меня есть виджет с текстом, кнопкой и изображением. оба представления загружаются из предпочтения. Я могу запустить 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
должен быть выполнен.
Есть ли другой способ достичь этого? Или другим способом передать некоторые данные и вызвать некоторую рутину обслуживания из виджета?
попробуй это,
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.