1. ホーム
  2. android

[解決済み] Androidで外部ストレージにファイルを保存する

2023-03-22 15:51:33

質問

私のアンドロイドアプリケーションで、ディレクトリを作成し、そこにファイルを保存することに少し問題があります。私はこれを行うには、コードのこの部分を使用しています。

String filename = "MyApp/MediaTag/MediaTag-"+objectId+".png";
File file = new File(Environment.getExternalStorageDirectory(), filename);
FileOutputStream fos;

fos = new FileOutputStream(file);
fos.write(mediaTagBuffer);
fos.flush();
fos.close();

しかし、それは例外を投げています。

java.io.FileNotFoundException が発生しました。/mnt/sdcard/MyApp/MediaCard/MediaCard-0.png (そのようなファイルまたはディレクトリはありません)

その行に fos = new FileOutputStream(file);

もし、ファイル名を : "MyApp/MediaTag-"+objectId+" に設定すると動作しますが、ファイルを作成して別のディレクトリに保存しようとすると、例外がスローされます。何が間違っているのでしょうか?

そしてもうひとつの質問です。外部ストレージでファイルをプライベートにして、ユーザーがギャラリーでそれらを見ることができないようにする方法はありますか。 Disk Drive ?

どのように解決するのですか?

SDカードにビットマップを保存するには、この機能を使用します。

private void SaveImage(Bitmap finalBitmap) {

    String root = Environment.getExternalStorageDirectory().toString();
    File myDir = new File(root + "/saved_images");    
     if (!myDir.exists()) {
                    myDir.mkdirs();
                }
    Random generator = new Random();
    int n = 10000;
    n = generator.nextInt(n);
    String fname = "Image-"+ n +".jpg";
    File file = new File (myDir, fname);
    if (file.exists ())
      file.delete (); 
    try {
        FileOutputStream out = new FileOutputStream(file);
        finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
        out.flush();
        out.close();

    } catch (Exception e) {
         e.printStackTrace();
    }
}

で、マニフェストにこれを追加します。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

EDITです。 この行を使うことで、保存された画像をギャラリービューで見ることができるようになります。

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
                         Uri.parse("file://" + Environment.getExternalStorageDirectory())));

このリンクも見てください http://rajareddypolam.wordpress.com/?p=3&preview=true