Android M demander la permission de non activité
Mon widget fait des appels pour assurer les autorisations à l'extérieur d'un Activity
portée. Est-il possible de demander des autorisations pour Android M à l'extérieur d'un Activity
?
Vous devez vous connecter pour publier un commentaire.
Non, il n'est pas possible. Ce que vous pouvez faire est d'envoyer une notification lorsque l'utilisateur peut appuyer et d'utiliser ensuite une activité à la demande/gérer l'autorisation (peut-être en dialogue avec le thème).
Vous pouvez seulement demander la permission de l'Activité ou de fragment.
Trouver un point dans votre Activité ou Fragment où vous vous sentez à l'Application nécessitera une autorisation, puis d'appeler requestPermission méthode. l'envoi de la notification ne fonctionnera pas parce que vous voulez que votre code de traitement de l'onu jusqu'à ce que vous obtenez que les autorisations demandées, puis de reprendre votre fonctionnalité de onRequestPermissionResult() la méthode.
Je pense qu'il est possible de demander une autorisation à l'extérieur d'une Activité, aussi longtemps que vous utilisez la méthode
ActivityCompat.requestPermissions (Activité de activité de, String[] autorisations, int requestCode)
à partir de la bibliothèque de prise en charge et de passer l'Activité en tant que paramètre de la méthode.
Par exemple:
où targetActivity est l'Activité qui doit mettre en œuvre la méthode:
onRequestPermissionsResult (int requestCode, String[] autorisations, int[] grantResults)
C'est la méthode qui gérera de demande d'autorisation résultat.
AppWidgetProvider
?ou dois-je le mettre dans monRemoteViewsService.RemoteViewsFactory
? MonListView
dans mon widget doit vérifier l'emplacement.Vous pouvez utiliser le Facile Autorisations de la bibliothèque.
Android nécessite que ces demandes proviennent d'un
Activity
. Facile d'Autorisations, ce n'est plus un problème, vous pouvez demander la permission de n'importe où tant que vous fournissezContext
. En outre, si vous demandez une autorisation déjà accordée à l'utilisateur de ne pas être invité.Divulgation complète, notre société gère et développe cette libre d'utiliser la bibliothèque. Cela étant dit, nous sommes convaincus que c'est un outil utile et nous n'aurions pas le partager autrement.
Activity
.Context
est nécessaire pour la bibliothèque, comme beaucoup de bibliothèques, c'est de la magie mais il est encore en fonction dans le monde réel :). Le plus grand avantage est que vous pouvez demander pour activer une permission de n'importe quel endroit, même une classe qui n'est pas unActivity
. Aussi, la dernière version va vous permettre d'activer automatiquement toutes les autorisations qui sont dans votreManifest
fichier. Il y a un exemple d'application sur le GitHub de la page; si vous avez quelques minutes, vous devriez certainement vérifier. S'il vous plaît laissez-nous savoir si vous avez plus de questions.J'ai trouvé une solution qui semble fonctionner correctement. L'astuce consiste à créer une transparence de l'activité qui n'est là que pour demander les autorisations et est terminée immédiatement après. Vous aurez toujours besoin d'un contexte, bien sûr, mais il n'a pas à être une activité.
L'activité peut retourner le résultat (accordée ou refusée) par l'intermédiaire d'une diffusion (depuis
startActivtyForResult
n'est pas possible en dehors d'une activité).Vous pouvez utiliser cette activité:
Et ce style pour l'activité
Dans le manifeste:
Et ensuite l'utiliser comme ceci (contexte requis)
Il est possible d'appeler requestPermissions() de l'extérieur de votre activité, mais dans votre classe, vous devriez avoir le cadre de cette activité.
Pour travailler, vous devez implémenter la méthode ci-dessous dans votre activité
De sorte que ce remplacer la méthode get exécuter lorsque l'utilisateur appuyez sur autoriser ou refuser le bouton sur la fenêtre pop up