ZHXG4300
小刚张嘎
采纳率85.7%
2018-01-11 06:00

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

5
已采纳

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下面的注释了就能执行到,求解!怎样才能保存在手机内存中?
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

8条回答

  • u013477745 jesseCSD 3年前

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

    点赞 2 评论 复制链接分享
  • ZHXG4300 小刚张嘎 3年前

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

    点赞 评论 复制链接分享
  • lixiaoranxr 为所当为顺其自然 3年前

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

    点赞 2 评论 复制链接分享
  • qq_19240001 3年前

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

    点赞 1 评论 复制链接分享
  • usecf usecf 3年前

    看看你失败的log文件

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

    点赞 3 评论 复制链接分享
  • gezhao163 伊釨言 3年前

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

    点赞 评论 复制链接分享
  • dengjianlong123 dengjianlong123 3年前

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

    点赞 评论 复制链接分享
  • u014727709 想你依然心痛 3年前

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

    点赞 1 评论 复制链接分享