Android保存图片失败,找不到原因,求指点!

public void saveBitmap() {

    Toast.makeText(MainActivity.this, "保存图片成功", 1).show();
        String state=Environment.getExternalStorageState();
        File file;

    try {
        if(Environment.MEDIA_MOUNTED.equals(state)){
            // 保存图片到SD卡上
           file = Environment.getExternalStorageDirectory();
        }else{
           file =getFilesDir();
        }

        FileOutputStream stream = new FileOutputStream(file.getPath()+System.currentTimeMillis()+".png");
        baseBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
        Toast.makeText(MainActivity.this, "保存图片成功", 0).show();

        // Android设备Gallery应用只会在启动的时候扫描系统文件夹
        // 这里模拟一个媒体装载的广播,用于使保存的图片可以在Gallery中查看鿴
      //  Intent intent = new Intent();
       // intent.setAction(Intent.ACTION_MEDIA_MOUNTED);
       // intent.setData(Uri.fromFile(Environment.getDataDirectory()));
      //  sendBroadcast(intent);
        stream.flush();
        stream.close();

    } catch (Exception e) {
        Toast.makeText(MainActivity.this, "保存图片失败", 1).show();
        e.printStackTrace();
    }

}

    输出“保存图片失败”,  上面这一句也不会被执行:Toast.makeText(MainActivity.this, "保存图片成功", 1).show();为什么呢?但是把try下面的注释了就能执行到,求解!怎样才能保存在手机内存中?
1

8个回答

FileOutputStream stream = new FileOutputStream(file.getPath()+System.currentTimeMillis()+".png");
改成
FileOutputStream stream = new FileOutputStream(file.getAbsolutePath()+"/"+System.currentTimeMillis()+".png");

2

看看你失败的log文件

adb logcat > saveImgFail.log
怀疑是保存的路径有问题

3

你这是andriod6.0系统以下版本吗?
6.0以上版本是需要动态申请权限的。

2

直接用图片工具类吧,哪有这么麻烦!https://github.com/AbrahamCaiJin/CommonUtilLibrary

1

先前可以现在不可以的情况下,看一下安卓手机权限,每个系统版本都会发生少许的变化

1
ZHXG4300
小刚张嘎 谢谢你,我到手机设置->应用管理 里面,去开了储存权限就行了
一年多之前 回复

先检查存储权限,安卓6.0之后存储权限是关闭的,需要你代码去调,然后弹出框让用户授权

0
ZHXG4300
小刚张嘎 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>开了的啊
一年多之前 回复

你看下是不是要在Manifest里面加读写sd卡的权限

0
ZHXG4300
小刚张嘎 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>开了的
一年多之前 回复

已经解决,是路径问题和权限问题,改一个都不行。路径改为:FileOutputStream stream = new FileOutputStream(file.getAbsolutePath()+"/"+System.currentTimeMillis()+".png");权限要在手机设置里面开才行。但是只能采纳一位,谢谢其他人的帮助

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!