2016-12-08 3 views
0

Ich versuche ein Bild zu speichern und alarmiere die Galerie über das neue Bild. Das Bild wird nicht sofort in der Galerie angezeigt, aber es kann einige Stunden dauern, bis es aktualisiert wird. Ich verwende den folgenden Code ein:Android-Galerie wird nicht aktualisiert, nachdem das Bild gespeichert wurde

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); 
       } 
      }); 

der Wert r nach dem insertImage ist content://media/external/images/media/2082, die uri im onScanCompleted null ist.

Was mache ich falsch?

Antwort

0

Das Problem ist, dass der von MediaStore.Images.Media.insertImage zurückgegebene Pfad kein physischer Pfad ist. den realen Pfad zu erhalten, verwenden:

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(); 
     } 
    } 
} 

Quelle: Get filename and path from URI from mediastore

Verwandte Themen