android:授予访问权限在外部清单上写入

时间:2016-09-19 12:53:22

标签: android image android-manifest android-permissions android-external-storage

我在清单里面:

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

但是当我运行应用程序(它应该创建并弹出卡片作为图像)时,不会创建图像。

然后我手动更改应用的权限(启用外部存储权限:settings->applications->Myapp->permissions),该应用正常运行。

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

如果您的版本低于android 6(Marshmallow),您可以在不检查权限的情况下使用此代码:

final int REQUEST_CODE = 1;

ActivityCompat.requestPermissions(activity,
                new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},REQUEST_CODE);

否则你需要一个不同的方法:

    public static boolean checkIfPermissionNeeded(Activity activity) {

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
   activity.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
                            != PackageManager.PERMISSION_GRANTED){
     return true;
    }

    return false;
    }

如果返回true,您可以使用第一个块中的代码。

所以:

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    switch (requestCode){
        case REQUEST_CODE:

            if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
                //task may be continued
                permission = true;
            }
            else{
                //task cancelled
                permission = false;

            }
            break;

    }
}

在您的活动中,如果权限为true,您可以继续执行所需的操作。