将图像保存到所有设备上的SD卡

  • 本文关键字:SD 图像 保存 android
  • 更新时间 :
  • 英文 :


我的应用程序涉及从设备图库中选择图像,然后将较小版本的图像版本保存到SD卡上的文件夹中。我遇到的问题是,有些用户报告图像并未将其保存到文件夹中。但是,大多数用户报告该应用程序正常工作,我无法分辨其他少数用户正在发生什么。到目前为止,据报道涉及该问题的设备如下:华为T-Mobile MyTouch,Samsung GT-S5830I,HTC EVO 4G和Samsung Galaxy S2。我本人有摩托罗拉Atrix 2,我没有这样的问题。

我的清单已经有标签。我的大多数代码来自其他Stackoverflow解决方案,用于从图库中获取图像,然后将其保存到SD卡。

从画廊获取图像:

public void onActivityResult(int requestCode, int resultCode, Intent data) 
{
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) 
    {
         switch(requestCode) 
         {
            case SELECT_IMAGE:
                 image_dir = getPath(data.getData());
                 Bitmap myBitmap = decodeFile(new File(image_dir));
                 resizedBitmap = Bitmap.createScaledBitmap(myBitmap, (int)(myBitmap.getWidth()/2), (int)(myBitmap.getHeight()/2), true);
                 break;
         }
    }
    else
    {
         image_dir = "None";
    }
}

将图像保存到SD卡:

OutputStream fOut = null;
File file = new File(Environment.getExternalStorageDirectory()+"/MyApp",imgname+".jpg");
fOut = new FileOutputStream(file);
resizedBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOut);
fOut.flush();
fOut.close();

,这一切似乎对大多数用户来说都很好,但是对于某些用户而言,图像没有保存。这是我在代码本身中忽略的权限问题还是某种设置?任何帮助都将不胜感激。

This directory may not currently be accessible if it has been mounted by the user on their computer, has been removed from the device, or some other problem has happened

Environment.getExternalStorageDirectory()将返回null,因此您应该先检查Environment.getExternalStorageState()

原因可能是这些设备不使用流行的外部存储惯例/mnt/sdcard/。这里有一些暗示,三星Galaxy S2和HTC Evo 4G就是这种情况。可能的问题可能不是SD未安装,而是您应该按照Jaredzhang建议进行检查。我还建议您聆听最可能的错误并报告它们 - 例如,检查是否安装了SD,是否存在目标文件夹等。不用说,最好将您的手转移到其中一种设备上并检查你自己。也许您还可以在线搜索这些设备的结果是什么。

最新更新