如何修复“权限被拒绝”?

基里尔·巴拉索夫(Kirill Balashov)

我正在尝试将位图保存到文件,但是android studio引发异常java.io.FileNotFoundException: /storage/emulated/0/Pictures/savedBitmap.png (Permission denied)我在做什么错?

public void save(){
        File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "savedBitmap.png");
        if (file.exists()){
            Log.i(TAG, "file is exists");
        } else {
            Log.i(TAG, "file is not exists");
        }
        try {
            FileOutputStream fos = null;
            try {
                fos = new FileOutputStream(file);
                mBitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
            } finally {
                if (fos != null) fos.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    2019-04-30 13:03:03.058 22470-22470/com.example.paint I/PaintView: file is not exists
    2019-04-30 13:03:03.059 22470-22470/com.example.paint W/System.err: java.io.FileNotFoundException: /storage/emulated/0/Pictures/savedBitmap.png (Permission denied)
卡尔西克·派(Karthik Pai)

您需要先向您的AndroidManifest.xml添加android.permission.WRITE_EXTERNAL_STORAGE和android.permission.READ_EXTERNAL_STORAGE权限。然后,需要以编程方式检查活动的onCreate()方法中是否启用了这些权限。您可以按照以下步骤进行操作。

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

        List<Integer> lPermission = new ArrayList<>();
        List<String> stringPermissionList1 = getPermissionList();
        for (int i = 0; i < stringPermissionList1.size(); i++) {
            lPermission.add(ContextCompat.checkSelfPermission(activity, stringPermissionList1.get(i)));
        }
        boolean bPermissionDenied = false;
        for (int i = 0; i < lPermission.size(); i++) {
            int a = lPermission.get(i);
            if (PackageManager.PERMISSION_DENIED == a) {
                bPermissionDenied = true;
                break;
            }
        }


        if (bPermissionDenied) {


            String sMessage = "Please allow all permissions shown in upcoming dialog boxes, so that app functions properly";
   //make request to the user         
List<String> stringPermissionList = getPermissionList();
            String[] sPermissions = stringPermissionList.toArray(new String[stringPermissionList.size()]);

            //request the permissions
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                requestPermissions(sPermissions, PERMISSION_REQUEST_CODE);
            }
        } else {
           doFurtherProcessing();
        }


    } else {
      doFurtherProcessing();

    }
}



private List<String> getPermissionList(){
    List<String> stringPermissionList=new ArrayList<>();

 stringPermissionList.add(Manifest.permission.READ_EXTERNAL_STORAGE);
    stringPermissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
    return  stringPermissionList;
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        boolean isAllPermissionGranted = true;

        for (int i = 0; i < grantResults.length; i++) {
            int iPermission = grantResults[i];
            if (iPermission == PackageManager.PERMISSION_DENIED) {
                isAllPermissionGranted = false;
                break;
            }
        }
        if (isAllPermissionGranted) {
            doFurtherProcessing();
        } else {
            // Prompt the user to grant all permissions
        }

}

希望这可以帮助

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何修复“ WebDriverException:消息:连接被拒绝”?

如何修复Docker:获得权限被拒绝的问题

如何修复自制权限?

如何修复损坏的Perl权限?

如何修复错误:mkdir():运行作曲家时权限被拒绝

如何修复travis.yml中拒绝的gradlew权限?

修复file_get_contents权限被拒绝的错误

如何修复“ PermissionError:[Errno 13]权限被拒绝:'静态'”?

如何拒绝通知权限?

如何修复gitlab Ci / CD中的权限被拒绝(公钥,密码)?

如何修复ngrok权限被拒绝?

如何修复bin / sh:无法创建/etc/sysctl.conf:运行docker-compose时权限被拒绝?

如何修复PHP / Sendgrid / Heroku中的“ 401Array {“ errors”:[{“ message”:“权限被拒绝,错误的凭证”,“ field”:null,“ help”:null}]}“”错误?

如何修复Docker sh入口点中的``权限被拒绝''

打开附件时如何修复来自Yahoo Mail Provider的权限拒绝?

使用csshX时如何修复“权限被拒绝”

如何修复amvavis报告clamav的“权限被拒绝”

gitlab:Windows:如何使用chmod并修复“获取权限被拒绝(公钥)。致命:无法从远程存储库读取”

如何修复注册表中的“拒绝所有人”权限

如何修复在任何端口上的“监听EACCES:权限被拒绝”

尝试读取excel文件时如何修复[Errno13]权限被拒绝?

如果在 docker build 期间添加了该目录,如何修复拒绝访问目录的权限?

如何修复“错误:权限被拒绝@[此处的文件目录]”,而在 Mac 上“limking”python 3

如何修复 [Errno 13] 权限被 openpyxl 拒绝

如何修复 Nginx 与套接字的连接失败(权限被拒绝)

如何在 linux 上修复 psutil 导入错误“权限被拒绝”?

如何修复 macOS 的 AppStore 拒绝“您的应用程序请求管理员访问权限才能运行”

如何修复 Python 中的“权限被拒绝”错误

如何修复 npm 错误 EACCES:权限被拒绝?