2013-04-20 1 views
0

Я пытаюсь сохранить фотографии, которые я взял некоторое время назад, в другую папку (папка уже существует). Мой манифест в курсе разрешений, которые мне нужны, и я знаю, что нужно использовать что-то вдоль линий:Android Сохранить изображение в новой папке

MediaStore.Images.Media.insertImage(getContentResolver(), yourBitmap, yourTitle , yourDescription); 

Ниже мой код. Что я делаю неправильно, что это не спасет? Спасибо!

save.setOnClickListener (новый View.OnClickListener() {

@Override 
public void onClick(View v) { 
// TODO Auto-generated method stub 

int id = viewIt.getId(); 

String root = Environment.getExternalStorageDirectory().toString(); 
String myDir = new String(root + "/New Directory/Folder 1/"); 
String description = ""; 
String filestring = arrPath[id];   
try { 
    MediaStore.Images.Media.insertImage(getContentResolver(), myDir, filestring, description); 
    } catch (FileNotFoundException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 
    sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, 
    Uri.parse("file://" + Environment.getExternalStorageDirectory()))); 

    Toast.makeText(getApplicationContext(), "Save Successful", Toast.LENGTH_SHORT).show();   


    } 
}); 

Вот ошибки из моего LogCat:

04-20 17:38:03.763: E/AndroidRuntime(1003): FATAL EXCEPTION: main 
04-20 17:38:03.763: E/AndroidRuntime(1003): java.lang.NullPointerException 
04-20 17:38:03.763: E/AndroidRuntime(1003):  at android.provider.MediaStore$Images$Media.insertImage(MediaStore.java:551) 
04-20 17:38:03.763: E/AndroidRuntime(1003):  at com.test.Import$ImageAdapter$2$4$1.onClick(Import.java:339) 
04-20 17:38:03.763: E/AndroidRuntime(1003):  at android.view.View.performClick(View.java:2485) 
04-20 17:38:03.763: E/AndroidRuntime(1003):  at android.view.View$PerformClick.run(View.java:9080) 
04-20 17:38:03.763: E/AndroidRuntime(1003):  at android.os.Handler.handleCallback(Handler.java:587) 
04-20 17:38:03.763: E/AndroidRuntime(1003):  at android.os.Handler.dispatchMessage(Handler.java:92) 
04-20 17:38:03.763: E/AndroidRuntime(1003):  at android.os.Looper.loop(Looper.java:123) 
04-20 17:38:03.763: E/AndroidRuntime(1003):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
04-20 17:38:03.763: E/AndroidRuntime(1003):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-20 17:38:03.763: E/AndroidRuntime(1003):  at java.lang.reflect.Method.invoke(Method.java:507) 
04-20 17:38:03.763: E/AndroidRuntime(1003):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
04-20 17:38:03.763: E/AndroidRuntime(1003):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
04-20 17:38:03.763: E/AndroidRuntime(1003):  at dalvik.system.NativeStart.main(Native Method) 

ответ

-1

Я понял это! Я решил пойти другим путем и просто переименовать файл. Я понял, что не хотел кратных одного изображения (пытаясь сохранить пространство sdcard), поэтому я сделал это вместо этого:

int id = viewIt.getId(); 

File sdcard = Environment.getExternalStorageDirectory(); 
File sdddcard = new File(sdcard + "/New Directory/Folder 1/"); 

File from = new File(arrPath[id]); 


Random generator = new Random(); 
int n = 10000; 
n = generator.nextInt(n); 
String filename = "ImageImport-"+ n +".jpg"; 

File to = new File(sdddcard,filename); 

from.renameTo(to); 
+0

Почему это получило голос? Это сработало для меня. Если у вас есть лучший ответ, я бы хотел быть просветленным. – BossWalrus

0

1) Имя папки с пространством может иметь некоторую проблему, чтобы убедиться, вы проверяете, существует ли папка, иначе создайте ее.

File file = new File(myDirPath); 
if(!file.exists()) { 
    if(!file.mkdirs()){ 
    Log.e("TAG", "Error: You can't create folder"); 
    } 
} 

2) Вероятно, есть ошибка, но вы ее не видите, потому что вы получаете исключение, но не печатаете его.

Попробуйте заменить этот

e.printStackTrace(); 

с

Log.e("TAG", "Error: "+ e.toString());

+0

Спасибо! Теперь я вижу ошибку. Он говорит мне, что моя строка: MediaStore.Images.Media.insertImage (getContentResolver(), myDir, filestring, description); это проблема. Любая идея, каким образом я отформатировал ее неправильно? – BossWalrus

+0

Что сказал отчет об ошибке в этой строке? – kabuto178

+0

04-20 17: 38: 03.763: E/AndroidRuntime (1003): FATAL EXCEPTION: main 04-20 17: 38: 03.763: E/AndroidRuntime (1003): java.lang.NullPointerException 04-20 17:38 : 03.763: E/AndroidRuntime (1003): \t на android.provider.MediaStore $ Images $ Media.insertImage (MediaStore.java:551) – BossWalrus

 Смежные вопросы

  • Нет связанных вопросов^_^