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

How To Request Android Permission API >= 23?

嗨,晚上好 Whosebugers,

我有一个问题,我的 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;
        }
    }
}

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

感谢您的回答

首先您需要在 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);
    }
}