2

私のアプリでは、デバイスのギャラリーから画像を選択し、その画像の小さいバージョンを SD カードのフォルダーに保存します。私が直面している問題は、一部のユーザーが、画像がフォルダーに保存されていないと報告していることです。ただし、ほとんどのユーザーはアプリが正常に動作していると報告しており、他の少数のユーザーに何が起こっているのかわかりません. これまでのところ、この問題が発生していると報告されているデバイスは、Huawei T-Mobile myTouch、Samsung GT-S5830i、HTC Evo 4G、および Samsung Galaxy S2 です。私自身 Motorola Atrix 2 を持っていますが、そのような問題はありませんでした。

私のマニフェストには既にタグが含まれています。私のコードのほとんどは、他のスタック オーバーフロー ソリューションから来て、ギャラリーから画像を取得し、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/を使用していないためである可能性があります。これがSamsungGalaxyS2HTCEvo4Gの場合であるというヒントがいくつかあります。おそらく問題はSDがマウントされていないことではありませんが、jaredzhangによって提案されているようにそのチェックを確実に実行する必要があります。また、最も可能性の高いエラーをリッスンして報告することをお勧めします。たとえば、SDがマウントされているかどうか、ターゲットフォルダーが存在するかどうかなどを確認します。言うまでもなく、これらのデバイスの1つを入手して、あなた自身。おそらく、それらのデバイスの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()Environment.getExternalStorageState()null を返すので、最初に確認する必要があります。

于 2012-10-24T02:24:47.073 に答える