1
經過這麼多的努力,我終於問到了。我有小部件與textview,按鈕和imageview。這兩個視圖都從首選項加載。當用戶單擊小部件中的imageview時用戶單擊textview和myActivityB時,我可以啓動myActivityA。但無法接收按鈕的onclick事件(在服務中)。我按照以下方式進行操作。android:app小部件::如何將非持久數據傳遞給小部件服務
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
可言。 OnStartCommand
在我的服務中調用,
任何人都可以提出什麼可能是問題?
從按鈕點擊事件我究竟想要什麼...... 如果服務未啓動(服務在第一個活動中啓動,生命期限現在限於活動),那麼啓動它並且應該執行TOGGLE_ACTION
。 如果服務已經開始(意味着我的活動已經最小化),那麼應該執行TOGGLE_ACTION
。
有沒有其他辦法可以達到這個目的? 或其他方式來傳遞一些數據並調用小部件的一些服務例程?
感謝Jeeva,在按鈕點擊事件我不想開始活動。我想執行或親密定義在服務中的例程。 – JRC