如何申请Android权限API> = 23?

时间:2016-06-11 22:56:08

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

嗨晚安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;
        }
    }
}

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

感谢您的回答

1 个答案:

答案 0 :(得分: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"/>

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

onCreate