2011-12-19 12 views
4

私はphoto1.jpgを保存して、Pictures/mockFolderに保存しました。これは、後で参考にするためのコードです。作成されていない特定のPicturesフォルダに画像を保存しようとしています

public class CameraActivity extends Activity 
{ 

    final int PICTURE_ACTIVITY = 1; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     String dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/mockFolder/"; 
     File newdir = new File(dir); 
     newdir.mkdirs(); 
     String file = dir + "photo1.jpg"; 
     File newfile = new File(file); 
     try { 
      newfile.createNewFile(); 
     } catch (IOException e) {}  

     Uri outputFileUri = Uri.fromFile(newfile); 

     Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
     startActivityForResult(cameraIntent, PICTURE_ACTIVITY); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
     super.onActivityResult(requestCode, resultCode, intent); 

     AlertDialog msgDialog; 
     if (resultCode == RESULT_CANCELED) { 
      msgDialog = createAlertDialog("Alert", "Picture was not saved. Please try again.", "OK"); 

     } else { 

      msgDialog = createAlertDialog("Alert", "Picture was saved successfully.", "OK"); 
     }  
     msgDialog.show(); 
    } 

    private AlertDialog createAlertDialog(String title, String msg, String buttonText){ 
     AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); 
     AlertDialog msgDialog = dialogBuilder.create(); 
     msgDialog.setTitle(title); 
     msgDialog.setMessage(msg); 
     msgDialog.setButton(buttonText, new DialogInterface.OnClickListener(){ 
      @Override 
      public void onClick(DialogInterface dialog, int idx){ 
       finish(); 
      } 
     }); 

     return msgDialog; 
    } 

    public void finish() 
    { 
     super.finish(); 
    } 


} 

答えて

4

おそらく新しいファイルも作成する必要があります。
File file = new File(path);を実行した後は、createNewFile()と電話してください。
というか:

String dir = Environment.DIRECTORY_PICTURES + "mockFolder/"; 
String name = "photo1.jpg"; 
File file = new File(dir, name); 
file.createNewFile(); 
+0

フォルダを作成したらどうしたらいいですか?私はギャラリーでそれを見つけることができません。 – Neeta

+0

あなたがそれを作成した直後に、ギャラリー内のフォルダを見つけることはありません。 Galleryは、最後にチェックした後に作成された新しいフォルダ/ファイルを検出するために、SDカードを再スキャンする必要があります。 –

+0

@kaciulaだから、どうやってそれが作られているのか分かりますか? – Neeta

4

あなたはnewFolder.mkdirs()代わりのnewFolder.mkdir()を呼び出すことによって、あなたのコードを向上させることができます。 mkdirs()は、指定されたパスに必要なすべてのフォルダを作成します。

また、パス変数を設定すると、Environment.DIRECTORY_PICTURESの後にスラッシュを追加するのを忘れてしまいました。

また、アプリケーションにSDカードへの書き込み権限があることを確認してください。

はAndroidManifest.xmlをにこれを追加します。

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

Environment.DIRECTORY_PICTURES写真だけのフォルダ名が含まれています。あなたはその場所へのフルパスを提供する必要があります。

File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); 
+0

良い点ですが、質問を投稿してからずっと前にコードを編集していましたが、しかし、ありがとう! – Neeta

+0

私は自分の答えを編集しました。 SDカードに書き込むためにあなたのアプリに設定されている権限はありますか?これは、アクティビティがハングする理由を説明します。 –

+0

ありがとう、私はそれを試み、あなたに戻ってきます。私はSDカードに書き込んでいたことを知らなかった。私は内部メモリに書き込むことを望んでいました、それは可能ですか? – Neeta

関連する問題