Hé, je conçois une application dans le studio Android. Dans lequel j'ai besoin de la permission de la caméra. J'ai inclus <uses-permission Android:name="Android.permission.CAMERA" />
dans le fichier AndroidManifest.xml. Il fonctionne correctement dans toutes les versions d'Android, à l'exception de Marshmallow. Comment puis-je obtenir l'autorisation de la caméra par défaut? Si ce n'est pas possible, comment puis-je le demander à l'utilisateur?
Commencez par vérifier si l'utilisateur a accordé l'autorisation:
if (ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA)
== PackageManager.PERMISSION_DENIED)
Ensuite, vous pouvez utiliser ceci pour demander à l'utilisateur:
ActivityCompat.requestPermissions(activity, new String[] {Manifest.permission.CAMERA}, requestCode);
Et dans Guimauve, il apparaîtra dans une boîte de dialogue
Vous pouvez essayer le code suivant pour demander l'autorisation de la caméra dans Marshmallow.
Commencez par vérifier si l'utilisateur accorde l'autorisation. Si l'utilisateur ne dispose pas du permission puis demander la permission de la caméra.
private static final int MY_CAMERA_REQUEST_CODE = 100;
if (checkSelfPermission(Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.CAMERA},
MY_CAMERA_REQUEST_CODE);
}
Après avoir demandé l'alerte d'autorisation s'affichera pour demander l'autorisation contient les options autoriser et refuser. Après avoir cliqué sur l'action, nous pouvons obtenir résultat de la demande avec la méthode suivante.
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == MY_CAMERA_REQUEST_CODE) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "camera permission granted", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "camera permission denied", Toast.LENGTH_LONG).show();
}
}}//end onRequestPermissionsResult
RxPermission est la meilleure bibliothèque qui a créé le code 1 ligne.
Pour la permission de la caméra, la solution de contournement est la suivante.
1) Ajoutez d'abord cette permission dans votre manifest.xml
.
<uses-permission Android:name="Android.permission.CAMERA" />
2) Ensuite, demandez la permission d'exécution.
new RxPermissions(this)
.request(Manifest.permission.CAMERA) // ask single or multiple permission once
.subscribe(granted -> {
if (granted) {
// All requested permissions are granted
} else {
// At least one permission is denied
}
});
ajouter cette bibliothèque dans votre build.gradle
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.tbruyelle:rxpermissions:0.10.1'
implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'
}
N'est-ce pas facile?
check using this
if (ContextCompat.checkSelfPermission(this, Android.Manifest.permission.CAMERA)
== PackageManager.PERMISSION_DENIED)
et
Cela fonctionne pour moi, la source est ici
int MY_PERMISSIONS_REQUEST_CAMERA=0;
// Here, this is the current activity
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)
{
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA))
{
}
else
{
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CAMERA}, MY_PERMISSIONS_REQUEST_CAMERA );
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
}