我從另一個Android應用程序(API 17)啓動服務時遇到問題。 但是,如果我確實從shell運行'am',則服務啓動正常。如何從另一個Android應用程序啓動Android服務
# am startservice com.xxx.yyy/.SyncService
Starting service: Intent { act=android.intent.action.MAIN cat=
[android.intent.category.LAUNCHER] cmp=com.xxx.yyy/.SyncService }
(service starts fine at this point)
# am to-intent-uri com.xxx.yyy/.SyncService
intent:#Intent;action=android.intent.action.MAIN;
category=android.intent.category.LAUNCHER;
component=com.xxx.yyy/.SyncService;end
所以,它看起來並不像我從意向缺少什麼,當我做同樣的代碼:
Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_LAUNCHER);
i.setComponent(new ComponentName("com.xxx.yyy", ".SyncService"));
ComponentName c = ctx.startService(i);
if (c == null) { Log.e(TAG, "failed to start with "+i); }
我得到的是(服務未在運行那段時間):
E/tag(4026): failed to start with Intent {
act=android.intent.action.MAIN
cat=[android.intent.category.LAUNCHER]
cmp=com.xxx.yyy/.SyncService }
我沒有對服務的意圖過濾器,我不希望設置一個,我真的想了解我在做什麼錯,通過啓動它的組件名稱,或者可能使其變得不可能樂來這樣做。
參考http://saigeethamn.blogspot.in/2009/09/android-developer-tutorial-part-9.html – Richa
@Richa這個頁面有使用Intent.setClassName()的例子,但它並不真的回答我的具體問題... –
發佈您的清單 –