J'utilise le fichier manifeste pour créer un récepteur de diffusion, pour ACTION_HEADSET_PLUG
. Mais je ne peux pas obtenir la diffusion lorsque le casque est connecté/déconnecté, Quel permission
dois-je utiliser dans le fichier manifeste afin de pouvoir recevoir l'intention de diffusion ACTION_HEADSET_PLUG
?Quelle autorisation requise pour obtenir ACTION_HEADSET_PLUG à l'intérieur du récepteur de diffusion
Quelle autorisation requise pour obtenir ACTION_HEADSET_PLUG à l'intérieur du récepteur de diffusion
Répondre
Ce n'est pas une permission, c'est en fait un problème avec la façon dont vous avez enregistré le récepteur. L'émission d'action de prise casque ne peut être reçu par les récepteurs activement enregistrés comme ceci:
registerReceiver(receiver, new IntentFilter(Intent.ACTION_HEADSET_PLUG));
Cela signifie que vous devez avoir un service maintenu en vie qui contient une référence au récepteur et aussi désinscrit quand le service est tué . Enfin, le service qui enregistre le récepteur doit également être démarré au démarrage; ce que vous faites avec un autre récepteur qui intercepte l'intention android.intent.action.BOOT_COMPLETED
. Pour cette partie, vous devrez utiliser l'autorisation android.permission.RECEIVE_BOOT_COMPLETED
.
Pour un exemple complet d'un service qui fait ce genre de choses, vous pouvez consulter un app I wrote that does just that.
Avec l'API 8, mon récepteur de diffusion a été appelé sans créer de service ni demander d'autorisations supplémentaires.
Vous pouvez définir une classe interne au sein de votre principale activité similaire à celle que je l'ai défini ci-dessous:
public class HeadSetBroadCastReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String action = intent.getAction();
Log.i("Broadcast Receiver", action);
if((action.compareTo(Intent.ACTION_HEADSET_PLUG)) == 0) //if the action match a headset one
{
int headSetState = intent.getIntExtra("state", 0); //get the headset state property
int hasMicrophone = intent.getIntExtra("microphone", 0);//get the headset microphone property
if((headSetState == 0) && (hasMicrophone == 0)) //headset was unplugged & has no microphone
{
//do whatever
}
}
}
}
Ensuite, enregistrez votre récepteur de radiodiffusion soit dynamique ou statique. Je le mien inscrit dynamiquement dans la méthode onCreate() de mon activité:
this.registerReceiver(headsetReceiver, new IntentFilter(Intent.ACTION_HEADSET_PLUG));
Assurez-vous que vous désenregistrez votre BroadcastReceiver avec unregisterReceiver du contexte. Dans mon cas, je l'ai fait dans la méthode onDestroy(). Ça devrait le faire.
- 1. ACTION_HEADSET_PLUG délai de diffusion
- 2. Problèmes avec diffusion ACTION_HEADSET_PLUG dans Android
- 3. Android - Obtenir le contexte à partir d'un récepteur de diffusion onReceive() pour envoyer à
- 4. Lecture d'anneaux dans un récepteur de diffusion
- 5. Récepteur de diffusion onReceive() jamais appelé - Android
- 6. exemple Timezone dans le récepteur de diffusion
- 7. Récepteur de diffusion pour le message gtalk/gmail recevoir
- 8. Android - Enregistrement d'un récepteur de diffusion pour deux intentions?
- 9. Problème lors de l'acquisition du verrouillage de réveil à partir du récepteur de diffusion
- 10. Erreur lors de la réception de SMS à l'aide du récepteur de diffusion
- 11. Android du récepteur à l'activité
- 12. Réponse automatique aux SMS reçus via le récepteur de diffusion?
- 13. Comment puis-je afficher une boîte de dialogue à partir d'un récepteur de diffusion Android?
- 14. Enregistrement de mon récepteur de diffusion à exécuter lorsqu'une application est lancée?
- 15. Envoi d'une intention du récepteur de diffusion vers un service en cours d'exécution dans Android
- 16. comment puis-je notifier une activité en cours d'exécution à partir d'un récepteur de diffusion?
- 17. Implémenter une fenêtre de niveau supérieur à partir d'un récepteur de diffusion
- 18. Comment créer une nouvelle intention pour le récepteur de diffusion d'une autre application?
- 19. Autorisation refusée pour obtenir la propriété HTMLDocument.body
- 20. Quelle autorisation dois-je ajouter au manifeste pour obtenir des lectures de capteur GPS?
- 21. Android: Puis-je utiliser un récepteur de diffusion pour l'échantillonnage de localisation GPS périodique sans exécuter de service?
- 22. Android Alarm Manager avec récepteur de diffusion enregistré dans le code plutôt que dans le manifeste
- 23. Quelle est la configuration requise pour Silverlight 2?
- 24. Intention de diffusion à l'intérieur d'un gestionnaire
- 25. Quelle est l'expression régulière requise pour valider les images
- 26. Aide requise pour analyser les résultats du test de charge
- 27. Récepteur de diffusion qui écoute le bouton de disque dur dans Android
- 28. Le contexte du récepteur d'événements pour Workflow n'est pas valide
- 29. Autorisation requise pour afficher la liste des tables dans Management Studio
- 30. Android Widget Clic et le récepteur de diffusion ne fonctionne pas
Comment savez-vous quelles actions de android.intent.action. * Peuvent être utilisées sans avoir un service actif en cours d'exécution? Comme dans ce cas si je l'ai fait Je n'aurais pas besoin d'un service pour détecter la suppression du casque. J'ai regardé la documentation android et ne peux pas dire quels services peuvent diffuser des émissions peuvent simplement être utilisés en s'inscrivant dans le manifeste. –