2014-06-23 3 views
1

Sur le démarrage terminé je démarre un service qui fonctionne parfaitement sur l'émulateur, mais quand je l'exécute sur le téléphone android Récepteur de radiodiffusion ne démarre pas le service. L'application Infact ne reçoit même pas de diffusion complète à partir de l'appareil.Boot Reciever Travailler sur Emulator mais pas téléphone Android

Ceci est mon fichier manifeste:

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="14" /> 

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_logo" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 

    <receiver 
     android:name="com.darkrai.smsbasedcontroller.BootReciever" 
     android:enabled="true" 
     android:exported="false" > 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     </intent-filter> 
    </receiver> 

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
</application> 

Ceci est ma classe recepteur de diffusion.

public class BootReciever extends BroadcastReceiver{ 
    @Override 
    public void onReceive(Context context, Intent intent) { 
    context.startService(new Intent(context, UpdateService.class)); 
    Log.d("Boot", "Boot Reciever"); 
} 

Répondre

0

Votre BroadcastReceiver - pour toute action - jusqu'à ce que quelque chose sur l'appareil utilise un Intent explicite pour lancer un de vos composants ne recevront aucune émission. Habituellement, cela se présente sous la forme de l'utilisateur tapant sur un Activity de votre dans le lanceur.

Alors, ajoutez un LAUNCHERActivity, appuyez dessus, puis vous recevrez les émissions jusqu'à ce que:

  • l'utilisateur que vous force arrête (généralement au moyen de l'application Paramètres), ou
  • la l'utilisateur désinstalle votre application
+0

Mais que se passe-t-il si je veux que mon appareil démarre le service dès que son démarrage est terminé. Wt modifications que je dois faire dans le code ci-dessus. – user3768061

+0

@ user3768061: J'ai déjà répondu à cela. Ajoutez une activité 'LAUNCHER'. Une fois que l'utilisateur l'a lancé, votre récepteur fonctionnera jusqu'à ce que l'utilisateur vous arrête ou vous désinstalle. Tant que l'utilisateur ne lance pas l'activité, votre récepteur ne fonctionnera pas. – CommonsWare

0

Certains appareils (la plupart du temps) HTC a une fonctionnalité appelée redémarrage rapide qui ne déclenche pas BOOT_COMPLETED. Au lieu de cela, ils déclenchent QUICKBOOT_POWERON.

Donc, ajoutez également cette autorisation <action android:name="android.intent.action.QUICKBOOT_POWERON" />. dire

<receiver 
     android:name="com.darkrai.smsbasedcontroller.BootReciever" 
     android:enabled="true" 
     android:exported="false" > 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 
     </intent-filter> 
    </receiver> 
+0

Je l'ai essayé mais cela n'aide pas. – user3768061

Questions connexes