Enregistrer le récepteur dans un service

J'ai un service qui peut être démarré et arrêté à partir d'un button .

Mais au sein du service je souhaite enregistrer un récepteur pour écouter les émissions de SMS. Je souhaite seulement que le service écoute SMS pendant qu'il fonctionne. J'ai essayé registerReceiver(receiver, intentfilter) mais cela ne fonctionne pas. Qu'est-ce que je fais mal?

  • Horizontal LinearLayout à Anko
  • Impossible d'utiliser Android: xlargeScreens = "true"?
  • Exécution d'exécution Android: Impossible d'instancier l'activité componentInfo?
  • Supprimez toutes les ressources inutilisées d'un projet Android
  • Comment configurer le menu dans la barre d'outils dans Android
  • Alignement du texte fin de boutons Android
  • 3 Solutions collect form web for “Enregistrer le récepteur dans un service”

    Vous devez définir des autorisations dans le fichier AndroidManifest.

      <receiver android:name=".MySMSReciever"> <intent-filter> <action android:name= "android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver> <uses-permission android:name="android.permission.RECEIVE_SMS"/> 

    Si vous souhaitez seulement recevoir la diffusion pendant que votre service est en cours d'exécution, vous devrez enregistrer dynamiquement votre récepteur dans onCreate ()

    Il est également important de ne pas oublier de désinscrire votre récepteur dans la méthode OnDestroy ()!

    Exemple:

     import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.IBinder; import android.widget.Toast; public class YourClass extends Service { private static final String ACTION="android.provider.Telephony.SMS_RECEIVED"; private BroadcastReceiver yourReceiver; @Override public IBinder onBind(Intent arg0) { return null; } @Override public void onCreate() { super.onCreate(); final IntentFilter theFilter = new IntentFilter(); theFilter.addAction(ACTION); this.yourReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // Do whatever you need it to do when it receives the broadcast // Example show a Toast message... showSuccessfulBroadcast(); } }; // Registers the receiver so that your service will listen for // broadcasts this.registerReceiver(this.yourReceiver, theFilter); } @Override public void onDestroy() { super.onDestroy(); // Do not forget to unregister the receiver!!! this.unregisterReceiver(this.yourReceiver); } private void showSuccessfulBroadcast() { Toast.makeText(this, "Broadcast Successful!!!", Toast.LENGTH_LONG) .show(); } } 

    Supprimez le filtre d'intention du xml et ne faites que l'enregistrement dynamique du récepteur. Si vous ne voulez pas que cela fonctionne lorsque le service est éteint, puis enregistrez-le avant d'arrêter le service. N'oubliez pas d'ajouter la permission au xml cependant ….

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.