【问题标题】:Upgrade API Level in Android Studio在 Android Studio 中升级 API 级别
【发布时间】:2018-03-05 10:33:19
【问题描述】:

我在尝试将我的应用更新到 Marshmallow 6.0.1 时遇到了一些问题。我之前正在开发 5.1.1,我为更新 Android 腾出了一些空间,所以我确保它与 API 21-24 兼容。目前,6.0.1 在 API 23 上运行,但由于某种原因,应用程序在启动时会崩溃。 我正在运行最新的 Android Studio 3.0.1,我只希望它在 Android M 上运行。 我有两个模块,其中一个是相机的外部库。我分享我的 gradle 设置:

对于“应用”模块是:

apply plugin: 'com.android.application'

 android {
    compileSdkVersion 24
    buildToolsVersion '26.0.2'
    useLibrary  'org.apache.http.legacy'


    defaultConfig {
        applicationId "XXXXXXXXX"
        minSdkVersion 21
        targetSdkVersion 24
        versionCode 332
        versionName "1.7.3d"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    lintOptions{
        disable 'MissingTranslation'
    }
 }
  repositories {
     jcenter()
     maven { url "https://dl.bintray.com/drummer-aidan/maven" }
  }

 dependencies {
    compile project(':cam-library')
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:support-v13:25.3.0'
    compile 'com.android.support:appcompat-v7:25.3.0'
    compile 'com.android.support:design:25.3.0'
    compile 'com.google.code.gson:gson:2.7'
    compile 'com.android.volley:volley:1.0.0'
    compile 'org.apache.httpcomponents:httpmime:4.2.3'
    compile 'com.jcraft:jsch:0.1.54'
    compile 'com.jcraft:jzlib:1.1.3'}

另一个,Follestad 材质相机模组:

 apply plugin: 'com.android.library'

 ext {
    PUBLISH_GROUP_ID = 'com.afollestad'
    PUBLISH_ARTIFACT_ID = 'material-camera'
    PUBLISH_VERSION = '0.3.2'
    PUBLISH_VERSION_CODE = 21
    SUPPORT_LIB_VERSION = '25.3.0'
    VIDEO_PLAYER_VERSION = '0.2.12'
    MD_VERSION = '0.9.0.1'
    TARGET_SDK = 24
    BUILD_TOOLS = "24.0.1"
 }

android {
    compileSdkVersion TARGET_SDK
    buildToolsVersion BUILD_TOOLS

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion TARGET_SDK
        versionCode PUBLISH_VERSION_CODE
        versionName PUBLISH_VERSION
    }
    lintOptions {
        abortOnError false
        checkReleaseBuilds false
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    buildToolsVersion '25.0.0'
 }

repositories {
    jcenter()
    maven { url "https://dl.bintray.com/drummer-aidan/maven" }
 }

dependencies {
    compile "com.android.support:appcompat-v7:$SUPPORT_LIB_VERSION"
    compile "com.afollestad:easyvideoplayer:$VIDEO_PLAYER_VERSION"
    compile "com.afollestad.material-dialogs:core:$MD_VERSION"
    compile 'com.android.support:recyclerview-v7:25.3.0'
 } 

//apply from: 'https://raw.githubusercontent.com/afollestad/aidanfollestad.com/master/android-lib-release.gradle'

最后是 gradle 版本设置:

    // Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

这有什么问题,为什么它在 5.1.1 上有效,而在 6.0.1 上无效?

编辑:这是日志

    03/05 11:49:51: Launching app
$ adb shell am start -n "XXXXXXXXXXXXXX/XXXXXXXXXXXXXX.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -D
Waiting for application to come online: XXXXXXXXXXXXXX.test | XXXXXXXXXXXXXX
Waiting for application to come online: XXXXXXXXXXXXXX.test | XXXXXXXXXXXXXX
Waiting for application to come online: XXXXXXXXXXXXXX.test | XXXXXXXXXXXXXX
Waiting for application to come online: XXXXXXXXXXXXXX.test | XXXXXXXXXXXXXX
Waiting for application to come online: XXXXXXXXXXXXXX.test | XXXXXXXXXXXXXX
Connecting to XXXXXXXXXXXXXX
Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
I/art: Debugger is active
I/System.out: Debugger has connected
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
Connected to the target VM, address: 'localhost:8820', transport: 'socket'
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: debugger has settled (1486)
W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --compiler-filter=interpret-only --instruction-set=arm --instruction-set-features=smp,-div,-atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --compiler-filter=verify-at-runtime --instruction-set-variant=cortex-a9 --instruction-set-features=default --dex-file=/data/app/XXXXXXXXXXXXXX-1/split_lib_dependencies_apk.apk --oat-file=/data/dalvik-cache/arm/data@app@XXXXXXXXXXXXXX-1@split_lib_dependencies_apk.apk@classes.dex) because non-0 exit status
W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --compiler-filter=interpret-only --instruction-set=arm --instruction-set-features=smp,-div,-atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --compiler-filter=verify-at-runtime --instruction-set-variant=cortex-a9 --instruction-set-features=default --dex-file=/data/app/XXXXXXXXXXXXXX-1/split_lib_slice_0_apk.apk --oat-file=/data/dalvik-cache/arm/data@app@XXXXXXXXXXXXXX-1@split_lib_slice_0_apk.apk@classes.dex) because non-0 exit status
W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --compiler-filter=interpret-only --instruction-set=arm --instruction-set-features=smp,-div,-atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --compiler-filter=verify-at-runtime --instruction-set-variant=cortex-a9 --instruction-set-features=default --dex-file=/data/app/XXXXXXXXXXXXXX-1/split_lib_slice_1_apk.apk --oat-file=/data/dalvik-cache/arm/data@app@XXXXXXXXXXXXXX-1@split_lib_slice_1_apk.apk@classes.dex) because non-0 exit status
W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --compiler-filter=interpret-only --instruction-set=arm --instruction-set-features=smp,-div,-atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --compiler-filter=verify-at-runtime --instruction-set-variant=cortex-a9 --instruction-set-features=default --dex-file=/data/app/XXXXXXXXXXXXXX-1/split_lib_slice_2_apk.apk --oat-file=/data/dalvik-cache/arm/data@app@XXXXXXXXXXXXXX-1@split_lib_slice_2_apk.apk@classes.dex) because non-0 exit status
W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --compiler-filter=interpret-only --instruction-set=arm --instruction-set-features=smp,-div,-atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --compiler-filter=verify-at-runtime --instruction-set-variant=cortex-a9 --instruction-set-features=default --dex-file=/data/app/XXXXXXXXXXXXXX-1/split_lib_slice_3_apk.apk --oat-file=/data/dalvik-cache/arm/data@app@XXXXXXXXXXXXXX-1@split_lib_slice_3_apk.apk@classes.dex) because non-0 exit status
W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --compiler-filter=interpret-only --instruction-set=arm --instruction-set-features=smp,-div,-atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --compiler-filter=verify-at-runtime --instruction-set-variant=cortex-a9 --instruction-set-features=default --dex-file=/data/app/XXXXXXXXXXXXXX-1/split_lib_slice_4_apk.apk --oat-file=/data/dalvik-cache/arm/data@app@XXXXXXXXXXXXXX-1@split_lib_slice_4_apk.apk@classes.dex) because non-0 exit status
W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --compiler-filter=interpret-only --instruction-set=arm --instruction-set-features=smp,-div,-atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --compiler-filter=verify-at-runtime --instruction-set-variant=cortex-a9 --instruction-set-features=default --dex-file=/data/app/XXXXXXXXXXXXXX-1/split_lib_slice_5_apk.apk --oat-file=/data/dalvik-cache/arm/data@app@XXXXXXXXXXXXXX-1@split_lib_slice_5_apk.apk@classes.dex) because non-0 exit status
W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --compiler-filter=interpret-only --instruction-set=arm --instruction-set-features=smp,-div,-atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --compiler-filter=verify-at-runtime --instruction-set-variant=cortex-a9 --instruction-set-features=default --dex-file=/data/app/XXXXXXXXXXXXXX-1/split_lib_slice_6_apk.apk --oat-file=/data/dalvik-cache/arm/data@app@XXXXXXXXXXXXXX-1@split_lib_slice_6_apk.apk@classes.dex) because non-0 exit status
W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --compiler-filter=interpret-only --instruction-set=arm --instruction-set-features=smp,-div,-atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --compiler-filter=verify-at-runtime --instruction-set-variant=cortex-a9 --instruction-set-features=default --dex-file=/data/app/XXXXXXXXXXXXXX-1/split_lib_slice_7_apk.apk --oat-file=/data/dalvik-cache/arm/data@app@XXXXXXXXXXXXXX-1@split_lib_slice_7_apk.apk@classes.dex) because non-0 exit status
W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --compiler-filter=interpret-only --instruction-set=arm --instruction-set-features=smp,-div,-atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --compiler-filter=verify-at-runtime --instruction-set-variant=cortex-a9 --instruction-set-features=default --dex-file=/data/app/XXXXXXXXXXXXXX-1/split_lib_slice_8_apk.apk --oat-file=/data/dalvik-cache/arm/data@app@XXXXXXXXXXXXXX-1@split_lib_slice_8_apk.apk@classes.dex) because non-0 exit status
W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --compiler-filter=interpret-only --instruction-set=arm --instruction-set-features=smp,-div,-atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --compiler-filter=verify-at-runtime --instruction-set-variant=cortex-a9 --instruction-set-features=default --dex-file=/data/app/XXXXXXXXXXXXXX-1/split_lib_slice_9_apk.apk --oat-file=/data/dalvik-cache/arm/data@app@XXXXXXXXXXXXXX-1@split_lib_slice_9_apk.apk@classes.dex) because non-0 exit status
W/System: ClassLoader referenced unknown path: /data/app/XXXXXXXXXXXXXX-1/lib/arm
I/InstantRun: starting instant run server: is main process
W/art: Verification of void XXXXXXXXXXXXXX.MainActivity.injectIdleStatusFragment() took 2.665s
W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
W/System.err: java.io.FileNotFoundException: /storage/emulated/0/Download/nanodlp.log: open failed: EACCES (Permission denied)
W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:452)
W/System.err:     at java.io.FileOutputStream.<init>(FileOutputStream.java:87)
W/System.err:     at java.io.FileWriter.<init>(FileWriter.java:58)
W/System.err:     at XXXXXXXXXXXXXX.utils.Util.writeToLogFile(Util.java:113)
W/System.err:     at XXXXXXXXXXXXXX.MainActivity.onCreate(MainActivity.java:222)
W/System.err:     at android.app.Activity.performCreate(Activity.java:6251)
W/System.err:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
W/System.err:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
W/System.err:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
W/System.err:     at android.app.ActivityThread.-wrap11(ActivityThread.java)
W/System.err:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:102)
W/System.err:     at android.os.Looper.loop(Looper.java:148)
W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5422)
W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
W/System.err: Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied)
W/System.err:     at libcore.io.Posix.open(Native Method)
W/System.err:     at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:438)
W/System.err:   ... 16 more
V/XXXXXXXXXXXXXX.MainActivity: Permission is revoked
W/Activity: Can reqeust only one set of permissions at a time
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: XXXXXXXXXXXXXX, PID: 5426
                  java.lang.RuntimeException: Unable to start activity ComponentInfo{XXXXXXXXXXXXXX/XXXXXXXXXXXXXX.MainActivity}: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                      at android.app.ActivityThread.-wrap11(ActivityThread.java)
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                      at android.os.Handler.dispatchMessage(Handler.java:102)
                      at android.os.Looper.loop(Looper.java:148)
                      at android.app.ActivityThread.main(ActivityThread.java:5422)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                   Caused by: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
                      at com.afollestad.materialcamera.internal.BaseCaptureActivity.onRequestPermissionsResult(BaseCaptureActivity.java:336)
                      at android.app.Activity.requestPermissions(Activity.java:3823)
                      at android.support.v4.app.ActivityCompatApi23.requestPermissions(ActivityCompatApi23.java:49)
                      at android.support.v4.app.ActivityCompat.requestPermissions(ActivityCompat.java:372)
                      at XXXXXXXXXXXXXX.MainActivity.isStoragePermissionGranted(MainActivity.java:930)
                      at XXXXXXXXXXXXXX.MainActivity.onCreate(MainActivity.java:223)
                      at android.app.Activity.performCreate(Activity.java:6251)
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                      at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                      at android.os.Looper.loop(Looper.java:148) 
                      at android.app.ActivityThread.main(ActivityThread.java:5422) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

 

【问题讨论】:

  • 请发布您的日志数据
  • 很抱歉,我不知道如何找到日志数据。我必须明确地这样做还是每个应用程序都自己存储一些日志?我想我必须将其更改为调试模式并查看发生了什么,但 Android Studio 没有给我任何信息。编辑:它只说“错误运行应用程序:无法打开调试器端口(localhost:8820):java.net.ConnectException“连接被拒绝:连接”“
  • 添加上网权限,再试一次
  • 嗨@Jorge。从 android v6.0 开始,一些权限必须在运行时处理。请查看android documentation 运行时权限处理。祝你好运。 :)

标签: java android android-studio apk


【解决方案1】:
call the askForMarshmallowPermissions method inside splash screen on create method.
to grant danger premissions at run time
you have to added External store read and camera premission.


 Add premissions in Manifest.xml
 <uses-permission
        android:name="android.permission.CAMERA"
        android:required="false" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

askForMarshmallowPermissions(); call method in onCreate()

 private void askForMarshmallowPermissions() {
        List<String> permissionsNeeded = new ArrayList<String>();

        final List<String> permissionsList = new ArrayList<String>();


        if (!addPermission(permissionsList, android.Manifest.permission.WRITE_EXTERNAL_STORAGE))
            permissionsNeeded.add("Write to storage");

        if (!addPermission(permissionsList, Manifest.permission.CAMERA))
            permissionsNeeded.add("Camera");

        if (permissionsList.size() > 0) {
            if (permissionsNeeded.size() > 0) {
                // Need Rationale
                String message = "You need to grant access to " + permissionsNeeded.get(0);
                for (int i = 1; i < permissionsNeeded.size(); i++)
                    message = message + ", " + permissionsNeeded.get(i);
                showMessageOKCancel(message,
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                ActivityCompat.requestPermissions(SplashScreen.this,
                                        permissionsList.toArray(new String[permissionsList.size()]),
                                        CommonUtils.REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
                            }
                        });
                return;
            }
            ActivityCompat.requestPermissions(SplashScreen.this, permissionsList.toArray(new String[permissionsList.size()]),
                    CommonUtils.REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
            return;
        }
        callAfterPermission();


    }

       private boolean addPermission(List<String> permissionsList, String permission) {
        if (ContextCompat.checkSelfPermission(SplashScreen.this, permission) != PackageManager.PERMISSION_GRANTED) {
            permissionsList.add(permission);
            // Check for Rationale Option
            if (!ActivityCompat.shouldShowRequestPermissionRationale(SplashScreen.this, permission))
                return false;
        }
        return true;
    }


        private void showMessageOKCancel(String message, DialogInterface.OnClickListener okListener) {
        new AlertDialog.Builder(SplashScreen.this)
                .setMessage(message)
                .setPositiveButton("OK", okListener)
                .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        CommonUtils.showAlertDialogWithFinishActivity(SplashScreen.this,
                                "Please grant all required permissions to " +
                                        "continue running the app.",
                                CommonUtils.ALERT_TITLE, true, CommonUtils.NO_RESULT, null);
                    }
                })
                .create()
                .show();
    }


    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        switch (requestCode) {
            case CommonUtils.REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS: {
                Map<String, Integer> perms = new HashMap<String, Integer>();

                perms.put(android.Manifest.permission.WRITE_EXTERNAL_STORAGE, PackageManager.PERMISSION_GRANTED);
                perms.put(android.Manifest.permission.READ_EXTERNAL_STORAGE, PackageManager.PERMISSION_GRANTED); 
                perms.put(android.Manifest.permission.CAMERA, PackageManager.PERMISSION_GRANTED);

                // Fill with results
                for (int i = 0; i < permissions.length; i++)
                    perms.put(permissions[i], grantResults[i]);
                // Check for ACCESS_FINE_LOCATION
                if (perms.get(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
                        && perms.get(android.Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
                        && perms.get(android.Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
                    // All Permissions Granted
                    //insertDummyContact();
                    callAfterPermission();
                } else {


                    // todo display alert when user  Denied Permission

                }
            }
            break;
            default:
                super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }

【讨论】:

    猜你喜欢
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 2022-10-06
    • 1970-01-01
    相关资源
    最近更新 更多