2010-12-17 15 views
8

APK numaralı telefondan hizmet başlatmak istiyorum.Etkinlik veya alıcı olmadan bir hizmet başlatabilir miyim?

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <service android:name =".TestServcie"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </service> 
    </application> 

Herhangi fikirleri:

aşağıdaki şekilde kullanmaya çalıştı?
Teşekkürler

+0

Bu yüzden işe yaramıyor mu? (Hizmet yanlış yazıldığından değil mi?) Hiçbir şey olmaz mı? Btw, kullanıcıya hizmetin başladığı herhangi bir geri bildirim mi planlıyorsunuz? – EboMike

cevap

11

Hayır yapamazsınız.

Hizmeti başlatan basit bir aktivite oluşturun ve basitçe kullanıcıya (örneğin, hizmetin başlatıldığını söylemek için) bir geri bildirim sağlayın ve MAIN/LAUNCHER amacı ile Aktiviteyi ayarlayın.

+3

Birisi bu korkunç ve yardımcı olmayan yanıtı kaldırın ve diğerini üstüne koyun. – Arijoon

+0

@Arijoon: 'Hizmet' başlatılmayı nasıl öneriyorsunuz? Android v3.x sürümünden itibaren, kullanıcı uygulamayı başlatıcıdan manuel olarak başlatmamışsa herhangi bir uygulama bileşenini başlatmak mümkün değildir. Bu, bir "Etkinlik" başlatma anlamına gelir. En önemlisi, uygulama bileşenlerini kullanıcıların izni olmadan başlatmak kötü bir tasarım olacaktır. Ayrıca, diğer cevap doğru olabilir, ancak bir "Etkinlik" kullanıcı tarafından başlatılmadıkça başarısız olur (böylece izinlerini verir). Uygulama manuel olarak durdurulduysa ve manuel olarak yeniden başlatılmamışsa veya uygulama SD kartına yüklüyse de başarısız olur. – Squonk

+1

Sadece yükleme işleminden sonra ** bir Etkinlik ** çalıştırmak için gereklidir. Daha sonra hizmeti açılışta başlatabilirsiniz. Cevabınızın ilk kısmı doğru, ancak geri kalanı yardımcı olmuyor. Viber gibi birçok hizmet kullanıcıya sormadan arka planda önyükleme yapıyor. – Arijoon

29

BroadcastReceiver yazabilir ve niyet geldikten sonra Hizmeti çalıştırabilirsiniz. Örneğin, önyükleme aygıtından veya ihtiyacınız olan başka bir amaçtan sonra.

<receiver android:name=".StartupReceiver"> 
    <intent-filter> 
    <action android:name="android.intent.action.BOOT_COMPLETED"/> 
    <category android:name="android.intent.category.HOME"/> 
    </intent-filter> 
</receiver> 
+0

Bu cevabın doğru olduğunu düşünüyorum. Bir hizmetin kullanıcı olmadan nasıl harekete geçeceğini anlatıyor ve bence yazarın aradığı şey buydu. – Undo

+0

Google gibi, alıcıların kayıtlı olması için kullanıcının uygulamayı çalıştırması gerekiyor. – Pijusn

+1

Bu durumda, alıcılar AndroidManifest.xml aracılığıyla kaydedilir.Diğer bir deyişle, kullanıcı uygulamayı yüklediğinde kaydedilir. – Qlimax

İlgili konular