Ho riscontrato un problema nell'avvio di un servizio da un'altra app Android (API 17). Tuttavia, se eseguo "am" dalla shell, il servizio si avvia correttamente.Come avviare il servizio Android da un'altra app 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
Quindi, non sembra che mi manca qualcosa dal intento quando lo faccio lo stesso nel codice:
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); }
Quello che ottengo è (il servizio non è in esecuzione a quel tempo):
E/tag(4026): failed to start with Intent {
act=android.intent.action.MAIN
cat=[android.intent.category.LAUNCHER]
cmp=com.xxx.yyy/.SyncService }
non ho un filtro intento a servizio, e io non voglio crearne uno, sto cercando di capire che cosa sto facendo di sbagliato iniziarlo attraverso la sua nome del componente o cosa potrebbe renderlo impossibile le fare così.
consultare http://saigeethamn.blogspot.in/2009/09/android-developer-tutorial-part-9.html – Richa
@Richa Questa pagina ha esempi con l'utilizzo di Intent.setClassName(), ma in realtà non rispondi alla mia domanda specifica ... –
pubblica il tuo manifest –