2013-06-26 34 views
14

Başka bir Android uygulamasından (API 17) bir hizmet başlatırken sorun yaşıyorum. Ancak, kabuktan 'am' çalıştırırsam, hizmet iyi başlar.Başka bir Android uygulamasından Android hizmeti nasıl başlatılır

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); } 

(hizmet de çalışmıyorsa ne olsun edilmektedir: Ben amacından şey kaçırıyorum gibi kodda aynı şeyi yaparken

# 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 

Yani, görünmüyor o zaman): gerçekten ben aracılığıyla başlayan yanlış yapıyorum anlamaya çalışıyorum,

E/tag(4026): failed to start with Intent { 
act=android.intent.action.MAIN 
cat=[android.intent.category.LAUNCHER] 
cmp=com.xxx.yyy/.SyncService } 

Ben hizmet bir amaç filtresini yok, ben bir tane ayarlamak için istemiyoruz onun bileşen adı veya onu impossib yapabilir le bunu yapmak için.

+0

http://saigeethamn.blogspot.in/2009/09/android-developer-tutorial-part-9.html – Richa

+0

@Richa Bu sayfaya Intent.setClassName() kullanılarak örnekler verilmiştir, ancak gerçekten değil özel soruma cevap ver ... –

+0

manifestosunu gönder –

cevap

35

Böyle hizmetinizi başlatmak gerekir:

Intent i = new Intent(); 
i.setComponent(new ComponentName("com.xxx.yyy", "com.xxx.yyy.SyncService")); 
ComponentName c = ctx.startService(i); 

Eğer belirli bileşeni belirten eğer EYLEM veya KATEGORİ ayarlamak gerekmez. Hizmetinizin manifestte uygun şekilde tanımlandığından emin olun.

+0

Komik şey, i.setClassName kullanırsam .. .) (ve adı/kategoriyi ayarlayın), çalışır. Günlüğe yazdırılan amaç verileri tam olarak aynıdır. Ben sadece setComponent() kullandığımda niyet bilgileri tarafından benimkiyle aynı gibi görünüyor görünüyor, ama yine de bir hizmet başlatır ve diğeri yok ... –

+0

Bu tüm gerçekten çok garip geliyor . Lütfen bildirinizi gönderin. –

+0

http://pastebin.com/9KreiFmg –

İlgili konular