2016-04-05 10 views
0

Ich bin ein ernstes Problem mit einem bestimmten Android-Gerät (cat Telefon) aufweisen, die das letzte Foto nicht mit diesem Code genommen bringen:Android Mediastor nicht zuletzt Foto aufgenommen bringen

Cursor cursor = getContentResolver().query(
        Media.EXTERNAL_CONTENT_URI, new 
          String[]{Media.DATA, Media.DATE_ADDED, MediaStore.Images.ImageColumns.ORIENTATION}, 
        Media.DATE_ADDED, null, "date_added ASC"); 
      if (cursor != null && cursor.moveToFirst()) { 
       do { 
        Uri uri = Uri.parse(cursor.getString(cursor.getColumnIndex(Media.DATA))); 
        photoPath = uri.toString(); 
       } while (cursor.moveToNext()); 
       cursor.close(); 
      } 

Dies funktioniert in mehreren Telefonen, mehrere Android-Versionen, aber es funktioniert nicht in diesem Telefon (moveToFirst gibt false zurück).

Das Schlimmste ist, dass einige Apps diese DB aktualisieren (zum Beispiel die Take Screen Capture App). Aber wenn ich nach einem Screenshot ein Foto mache, ist der letzte Eintrag dieses Cursors der Screenshot.

Ich habe diese Abhilfe gefunden:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
     sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, _uri)); 
    } else { 
     sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, _uri)); 
    } 

Ich habe diesen Code nur vor dem Cursor, aber immer noch nicht funktionieren.

Irgendeine Idee?

Edit:

ich das Problem gelöst, war die Frage so:

Camera activity returning null android

Aber jeder immer geben die Hälfte und Antwort. Was ich tat, war dies:

... Erstellen der Absicht:

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
outputFileUri = getImageUri();   takePictureIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, outputFileUri); 
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); 

...

/** 
* @return 
*/ 
private Uri getImageUri() { 
    Uri m_imgUri = null; 
    File m_file; 
    try { 
     SimpleDateFormat m_sdf = new SimpleDateFormat("yyyyMMdd_HHmmss"); 
     String m_curentDateandTime = m_sdf.format(new Date()); 
     String m_imagePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + m_curentDateandTime + ".jpg"; 
     m_file = new File(m_imagePath); 
     m_imgUri = Uri.fromFile(m_file); 
    } catch (Exception p_e) { 
    } 
    return m_imgUri; 
} 

Umgang mit der Antwort:

if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { 

       String photoPath = outputFileUri.getPath(); 

} 
+0

Ich löste das Problem .. das Problem war das: –

Antwort

0

Die Antwort ist in meinem EDIT des ursprünglichen Beitrags.

Verwandte Themen