Ich habe versucht, die Umsetzung Kamera Berechtigungen auf diese Weise zu implementieren:Versuch Kamera Berechtigungen für Android M bekommen keine virtuelle Methode checkSelfPermission
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
}
}
und bekam diesen folgenden Fehler:
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
Irgendwelche Ideen, wie ich kann, repariere das? p.s. Wenn weitere Informationen benötigt werden, fragen Sie bitte
Hinter dem Problem in Derek Fung Antwort zitiert, 'checkSelfPermission()', 'requestPermission()' und kin nehmen den Namen einer * Erlaubnis * (zB 'Manifest.permission.CAMERA'), keine Berechtigungsgruppe. FWIW, [dieses Verzeichnis] (https://github.com/commonsguy/cw-omnibus/tree/master/Permissions/tutorial) enthält Vorher-Nachher-Editionen einer App, die die Kamera verwendet, wobei die "Nachher" -Edition verwendet wird Sucht nach Android 6.0-Laufzeitberechtigungen. Ich benutze 'ContextCompat' nicht nur, weil ich das Tutorial für die M Developer Preview geschrieben habe, bevor das' ContextCompat'-Zeug existierte. – CommonsWare