Je dois demander l'autorisation caméra et localisation dans certaines activités qui montrent l'aperçu de la caméra dans surfaceview
.
Où dois-je placer la fonction d'autorisation de demande? onCreate , onResume ou onSurfaceCreated ?
Et où dois-je installer la caméra?
4 Réponses :
Tout d'abord, définissez l'autorisation dans le fichier manifeste.
Dans le fichier java,
Vous devez demander à nouveau l'autorisation lors de l'exécution en utilisant checkSelfPermission
. Ceci est tout à fait nécessaire car si vous, l'utilisateur, n'avez pas donné l'autorisation, il ne pourra pas accéder à la caméra. Vous devez écrire ce code et toutes les fonctionnalités liées à la caméra lorsque vous voulez que la caméra apparaisse réellement.
Par exemple, s'il y a un bouton indiquant Ouvrir la caméra
, vérifiez d'abord l'autorisation si l'utilisateur a accordé ou non, puis ouvrez la caméra.
Voir demander l'autorisation correspond directement au plantage de l'application si le service est demandé et que l'autorisation n'est pas disponible. Je préférerais mettre l'autorisation dans onResume, car quelle que soit l'action de l'utilisateur, c'est-à-dire une réduction ou une boîte de dialogue de batterie faible en haut de l'écran, nous devons vérifier à nouveau les modifications d'autorisation afin que vos modifications d'activité aient pu se produire pour des raisons. Soit la caméra essaie de s'ouvrir après une demande du réseau, soit quelle est la situation.
Mettez l'autorisation de vérification de la caméra dans onResume.
Parlons donc de la façon dont vous feriez. Il y a un certain nombre de perceptions. Ce que je préfère faire c'est Je crée une classe Helper qui me permettrait de connaître l'état de l'autorisation avec ce code
1) You should write permission for camera in manifeast so that app can request the permission 2) Check if the camera permission is available or not before opening the camera, if not you should again request for the permission
}
} p >
Donc, dans la méthode onResume de votre activité, vérifiez si l'autorisation est disponible, sinon demandez l'autorisation.
override fun onResume() { super.onResume() if (!PermissionsHelper(this).isCameraPermissionAvailable()) { requestPermissions(arrayOf(Manifest.permission.CAMERA), CAMERA_REQUEST_CODE) } }
Veuillez également noter deux points p>
class PermissionsHelper(activity: Activity) { private val activity: Context init { this.activity = activity } fun isCameraPermissionAvailable()=ActivityCompat.checkSelfPermission(activity, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED
(identique à l'étape onResume)
Vous pouvez placer les autorisations n'importe où avant d'utiliser le service. Techniquement, cela n'a pas d'importance. Mais demander l'autorisation avec un écran de démarrage fournissant la raison pour laquelle l'autorisation est nécessaire ou la demander juste avant que le service ne soit utilisé est convivial.
meilleure façon de mettre la permission dans onResume.
idéalement, vous obtiendrez des autorisations AVANT de charger l'activité, mais vous pouvez la demander n'importe où qui n'interfère pas dans le «flux» de votre application. onResume est l'endroit où la plupart des applications de production placent le code car l'activité est détruite lorsque l'utilisateur change d'orientation et onResume est garanti d'être appelé