如何在android 6.0中请求存储权限?

时间:2017-01-25 15:12:46

标签: android

这是我到目前为止所做的,但问题是,代码从不要求权限,没有错误,没有强制关闭。我目前正在测试android 6.0设备。我甚至在设置中撤销了权限,但它仍然没有要求。我已经发布了以下完整代码 -

package com.example.pper;

import android.Manifest;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.util.Log;

public class MainActivity extends Activity {
private String TAG;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    isStoragePermissionGranted();
}

public boolean isStoragePermissionGranted() {
    if (Build.VERSION.SDK_INT >= 23) {
        if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
            Log.v(TAG, "Permission is granted");
            return true;
        } else {

            Log.v(TAG, "Permission is revoked");
            ActivityCompat
                    .requestPermissions(
                            this,
                            new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE },
                            1);
            return false;
        }
    } else { // permission is automatically granted on sdk<23 upon
                // installation
        Log.v(TAG, "Permission is granted");
        return true;
    }
}

@Override
public void onRequestPermissionsResult(int requestCode,
        String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
        Log.v(TAG, "Permission: " + permissions[0] + "was "
                + grantResults[0]);
        // resume tasks needing this permission
    }
}

}

2 个答案:

答案 0 :(得分:0)

检查shouldShowRequestPermissionRationale() - 如果您之前有对话框并点击“再也不要再问”,它将永远不会再请求您进行更新。

  

为了帮助找到用户可能需要解释的情况,Android提供了一个实用方法,shouldShowRequestPermissionRationale()。如果应用先前已请求此权限且用户拒绝了该请求,则此方法返回true。

     

注意:如果用户过去拒绝了权限请求,那么   在权限请求系统中选择了“不再询问”选项   对话框,此方法返回false。如果a,该方法也返回false   设备政策禁止该应用获得该许可。

答案 1 :(得分:0)

请确保您的清单文件包含以下内容:

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