2

我的应用程序涉及从设备的图库中选择图像,然后将该图像的较小版本保存到 SD 卡上的文件夹中。我遇到的问题是一些用户报告说图像没有保存到文件夹中。然而,大多数用户报告说该应用程序运行良好,我不知道其他少数用户发生了什么。到目前为止,被报告遇到问题的设备如下:华为 T-Mobile myTouch、三星 GT-S5830i、HTC Evo 4G 和三星 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();

对于大多数用户来说,这一切似乎都很好,但对于某些用户来说,图像并没有得到保存。这可能是权限问题还是我在代码本身中忽略的某种设置?任何帮助表示赞赏。

4

2 回答 2

0

原因可能是这些设备不使用流行的外部存储约定 /mnt/sdcard/ 。以下是三星 Galaxy S2HTC Evo 4G的一些提示。可能问题不在于未安装 SD,但您应该按照 jaredzhang 的建议明确运行该检查。我还建议侦听最可能的错误并报告它们 - 例如,检查 SD 是否已安装,目标文件夹是否存在等。不用说,最好将您的手放在其中一个设备上并检查你自己。也许您也可以在线搜索这些设备的 getExternalStorageDirectory() 结果是什么。

于 2012-10-24T02:42:43.313 回答
0

据此,_

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()

于 2012-10-24T02:24:47.073 回答