【问题标题】:How To Request Android Permission API >= 23?如何请求 Android Permission API >= 23?
【发布时间】:2016-06-11 22:56:07
【问题描述】:

嗨,晚上好 Stackoverflowers,

我有一个问题,在我的 MainActivity 上请求外部卡读取 GPS 等权限是否足够?

在我的onCreate中有

checkPermissions();

所以有

private void checkPermissions() {
    ActivityCompat.requestPermissions(this,new String[]{
            Manifest.permission.ACCESS_FINE_LOCATION}, 1);

    ActivityCompat.requestPermissions(this,new String[]{
            Manifest.permission.ACCESS_COARSE_LOCATION}, 2);

    ActivityCompat.requestPermissions(this,new String[]{
            Manifest.permission.READ_EXTERNAL_STORAGE}, 3);

}

public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    switch (requestCode) {
        case 1: {
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            } else {
            }
            return;
        }
        case 2: {
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            } else {
            }
            return;
        }
        case 3: {
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            } else {
            }
            return;
        }
    }
}

那还能优化吗? 并查询权限? 还是我完全错了?

感谢您的回答

【问题讨论】:

    标签: android-studio android-6.0-marshmallow android-permissions


    【解决方案1】:

    首先您需要在AndroidManifest.xml 中声明权限:

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

    不要请求onCreate 中的所有权限,请在您要使用它之前请求它们。 为每个权限执行一个这样的方法,并在请求之前检查您是否已经拥有它。

    private void checkReadPermission() {
        if (ContextCompat.checkSelfPermission(this,
                Manifest.permission.READ_EXTERNAL_STORAGE)
             != PackageManager.PERMISSION_GRANTED) {
    
             ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 3);
        }
    }
    

    【讨论】:

    • 感谢我的编译器说 Error:(482, 17) error: cannot find symbol variable ContextCompat EDIT: import android.support.v4.content.ContextCompat;解决
    • 早上好,我已经在我的 Galaxy S7 上进行了这种测试,并且没有询问读取权限!!?你能帮我解决这个问题吗?
    • mega 失败我的清单文件没有更新td ..now 工作 thx @juan-cruz-soler
    猜你喜欢
    • 2016-12-14
    • 2016-11-12
    • 1970-01-01
    • 2015-07-10
    • 2016-05-28
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 2015-11-15
    相关资源
    最近更新 更多