1
votes

Où placer la demande d'autorisation pour la caméra?

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?


2 commentaires

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é


4 Réponses :


0
votes

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.


0 commentaires

0
votes

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)


0 commentaires

0
votes

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.


0 commentaires

0
votes

Peut-être l'endroit le plus pertinent pour demander l'autorisation selon la documentation Android a> est

chaque fois que vous effectuez une opération nécessitant cette autorisation.

La raison derrière une telle recommandation est À partir d'Android 6.0 (niveau d'API 23), les utilisateurs peuvent révoquer les autorisations de n'importe quelle application à tout moment. Donc, même si l'application a utilisé l'appareil photo hier, elle ne peut pas supposer qu'elle a toujours cette autorisation aujourd'hui.

Et par conséquent, l'application doit "vérifier" à chaque fois l'autorisation, pour effectuer une opération qui nécessite cette autorisation.

Vous pouvez configurer la caméra et d'autres opérations "après" l'autorisation a été accordée pour utiliser l'appareil photo par l'utilisateur. Vous pouvez vérifier l'état si l'autorisation est accordée par l'utilisateur en remplaçant onRequestPermissionsResult

@Override
public void onRequestPermissionsResult(int requestCode,
        String permissions[], int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_CAMERA: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // permission was granted, yay! Do the
                // camera-related task you need to do.
            } else {
                // permission denied, boo! Disable the
                // functionality that depends on this permission.
            }
            return;
        }

        // other 'case' lines to check for other
        // permissions this app might request.
    }
}


0 commentaires