正在尝试制作绘画应用程序。除了“保存”按钮外,其他所有功能都按预期运行。每当我单击save按钮时,它都不会保存,并且我会收到一个错误java.lang.SecurityException: Permission Denial: writing com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=10397, uid=10298 requires android.permission.WRITE_EXTERNAL_STORAGE, or grantUriPermission()

else if(view.getId()==R.id.save_btn){
                //save drawing
                AlertDialog.Builder saveDialog = new AlertDialog.Builder(this);
                saveDialog.setTitle("Save drawing");
                saveDialog.setMessage("Save drawing to device Gallery?");
                saveDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener(){
                    public void onClick(DialogInterface dialog, int which){
                        //save drawing
                    }
                });
                saveDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener(){
                    public void onClick(DialogInterface dialog, int which){
                        dialog.cancel();
                    }
                });
                saveDialog.show();
                drawView.setDrawingCacheEnabled(true);
                String imgSaved = MediaStore.Images.Media.insertImage(
                        getContentResolver(), drawView.getDrawingCache(),
                        UUID.randomUUID().toString()+".png", "drawing");

在名单上我有
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

最佳答案

你可以这样包装你的代码:

 //check permission is granted or no
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
     {
      requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, RESULT);
     }
    else
     {
    //your code
     }

关于java - SecurityException权限-不将图像保存到android设备,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39194360/

10-11 02:48
查看更多