2016-12-08 2 views
0

Я пытаюсь сохранить изображение и предупреждать о новом изображении в Галерее. Изображение не отображается сразу в галерее, но для обновления может потребоваться даже несколько часов. Я использую следующий код:Галерея Android не обновляется после сохранения изображения

String title = "title"; 
    String r = MediaStore.Images.Media.insertImage(getContentResolver(), State.pictureWithDekor, title, title); 
    Uri uri = Uri.parse(r); 
    MediaScannerConnection.scanFile(this, 
      new String[] { uri.getPath() }, null, 
      new MediaScannerConnection.OnScanCompletedListener() { 

       public void onScanCompleted(String path, Uri uri) { 
        Log.i("TAG", "Finished scanning " + path); 
       } 
      }); 

значение r после insertImage является content://media/external/images/media/2082, то uri в onScanCompleted является null.

Что я делаю неправильно?

ответ

0

Проблема в том, что путь, возвращаемый с MediaStore.Images.Media.insertImage, не является физическим путем. чтобы получить реальный путь, используйте:

public String getRealPathFromURI(Context context, Uri contentUri) { 
    Cursor cursor = null; 
    try { 
     String[] proj = { MediaStore.Images.Media.DATA }; 
     cursor = context.getContentResolver().query(contentUri, proj, null, null, null); 
     int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
     cursor.moveToFirst(); 
     return cursor.getString(column_index); 
    } finally { 
     if (cursor != null) { 
      cursor.close(); 
     } 
    } 
} 

Источник: Get filename and path from URI from mediastore

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