如何在Android 5.1以上为应用程序提供基本权限?

时间:2016-06-27 12:02:41

标签: android permissions android-permissions

我是新手。

我的应用具有适用于所有低于5的api的存储权限。

(这些用于浏览按钮以选择文件或文件夹,然后执行指定的操作)

权限是(在AndroidManifest.xml文件中):

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

我想知道如何在运行时为5.1以上的API提供“存储”权限。

到目前为止我做了什么?:我已经在网上搜索过了,但是对于存储许可,没有详细的答案。

所有答案将不胜感激。

并且这个问题不是Run-time permission of Marshmallow的重复,因为它是关于:如何处理“永不再问”但我问这个问题,因为我没有得到任何详细信息新手 for Strorage权限的完整说明。

3 个答案:

答案 0 :(得分:1)

你可以这样给予你的许可:

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.d(TAG,"Permission: "+permissions[0]+ "was "+grantResults[0]);
        //resume tasks needing this permission
    }
}

答案 1 :(得分:1)

尝试使用if else条件查看任何特定手机的版本

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            // your code
        }

答案 2 :(得分:0)

那你在谈论为Andorid 6.0 +添加Rumtime权限吗?

如果是,this page shows you how to implement them

有关详细信息,请参阅this StackOverflow post