J'ai essayé d'implémenter les permissions de la caméra de cette façon:
private void checkCameraPermissions() {
if(checkCameraHardware(this)) {
if (checkSelfPermission(Manifest.permission_group.camera)
!= PackageManager.PERMISSION_GRANTED) {
Crashlytics.log("Requesting camera permission");
// Should we show an explanation?
if (shouldShowRequestPermissionRationale(
Manifest.permission_group.camera)) {
// Explain to the user why we need to use the camera
showRationaleForCameraUse();
}
requestPermissions(new String[]{Manifest.permission_group.camera},
Constants.MY_PERMISSIONS_REQUEST_CAMERA_GROUP);
// MY_PERMISSIONS_REQUEST_CAMERA_GROUP is an
// app-defined int constant
} else {
startApp();
}
}else{
showNoCameraAvailableAlert();
}
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case Constants.MY_PERMISSIONS_REQUEST_CAMERA_GROUP: {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, yay!
// start the app
startApp();
} else {
// permission denied, boo!
// leav the app!
showNoCameraAvailableAlert();
}
return;
}
// other 'switch' lines to check for other
// permissions this app might request
}
}
et j'ai cette erreur suivante:
Java.lang.NoSuchMethodError: No virtual method checkSelfPermission(Ljava/lang/String;)I in class Lim/emu/app/emu/app/view/splash/SplashActivity; or its super classes (declaration of 'im.emu.app.emu.app.view.splash.SplashActivity' appears in /data/app/im.emu.app.emu.test-1/base.apk)
at im.emu.app.emu.app.view.splash.SplashActivity.checkCameraPermissions(SplashActivity.Java:74)
at im.emu.app.emu.app.view.splash.SplashActivity.onCreate(SplashActivity.Java:52)
at Android.app.Activity.performCreate(Activity.Java:5977)
at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1105)
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2258)
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2367)
at Android.app.ActivityThread.access$800(ActivityThread.Java:148)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1283)
at Android.os.Handler.dispatchMessage(Handler.Java:102)
at Android.os.Looper.loop(Looper.Java:135)
at Android.app.ActivityThread.main(ActivityThread.Java:5274)
at Java.lang.reflect.Method.invoke(Native Method)
at Java.lang.reflect.Method.invoke(Method.Java:372)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:909)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:704)
08-30 16:34:10.801 17087-17357/im.emu.app.emu.test I/Fabric﹕ Crashlytics report upload complete: 55E30629033A-0001-42BF-296ED8AC703A.cls
Des idées pour résoudre ce problème? P.s. si vous avez besoin de plus d'informations, veuillez demander
Vous devriez exécuter le code sur le périphérique exécutant les versions précédentes. Vous devez utiliser ContextCompat.checkSelfPermission()
à la place.
Attention avec
'shouldShowRequestPermissionRationale(
Manifest.permission_group.camera)'
J'ai eu un problème avec le groupe d'autorisations où il voulait l'autorisation individuelle et non le groupe et lançait une exception si vous utilisiez l'autre
Vous avez oublié de donner l'autorisation dans AndroidManifest.xml
<uses-permission Android:name="Android.permission.CAMERA"/>
Vous devez utiliser ActivityCompat.checkSelfPermission()
à la place pour la capacité de rétrogradation sur les périphériques Pre-Lollipop. Donc, this.checkSelfPermission()
ne peut être utilisé que pour les applications déclarant minSdkVersion 23