繁体   English   中英

在外部存储中保存图像

[英]Save Image in External Storage

我的问题是,当我点击图片时,它显示已保存的消息但照片不会被保存。我还允许访问外部存储 WRITE_EXTERNAL_STORAGE

    public void onClick(View v) {
    if(isExternalStorageWriteable()) {
        FileOutputStream outputStream;
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
                R.drawable.img3);
        File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), "MyImage.png");
        try {
                outputStream = new FileOutputStream(file);
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream);
            outputStream.flush();
            outputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Toast.makeText(this,"Pic Created :  "+file,Toast.LENGTH_SHORT)
                .show();
    } else {
            Toast.makeText(this,"SDCard Not is Ready",Toast.LENGTH_SHORT)
                    .show(); } }
public boolean isExternalStorageWriteable()
{
    String state = Environment.getExternalStorageState();
    return Environment.MEDIA_MOUNTED.equals(state); }

在此处输入图片说明

“我还允许访问清单中的外部存储 WRITE_EXTERNAL_STORAGE”,或者您在运行时要求获得许可?

我猜您只有在 Android 版本 >= 23 (6.0) 的设备上才会遇到这个问题。 你应该在做之前检查你是否有权限在外部存储中写入,如果你应该请求权限:

ContextCompat.checkSelfPermission(thisActivity, Manifest.permission. WRITE_EXTERNAL_STORAGE);

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

https://developer.android.com/training/permissions/requesting.html

如果获得许可,检查堆栈跟踪并将其发布在这里,确保“Pic Created”toast 应保留在块末尾的 try-catch 内,而在 catch 块内,您将不得不启动否定 Toast。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM