2016-03-31 15 views
0

üzerinde boş imleç döndürür. Bu koda sahibim ve bir kaç cihazda test ettim, Samsung Galaxy S4'te çalışan Lollipop hariç. getContentResolver().query() yöntemi, her seferinde boş bir imleç döndürür. if/else deyimi bundan dolayı, başka gider ve insert çalışırsa ben insertİçerik Çözümleyici sorgusu, yalnızca Samsung Galaxy S4 çalışan bir Lollipop

 String mediaTitle = String.format("My Artist%s", title); 
     ContentValues values = new ContentValues(); 
     values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath()); 
     values.put(MediaStore.MediaColumns.TITLE, mediaTitle); 
     values.put(MediaStore.MediaColumns.SIZE, k.length()); 
     values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/ogg"); 
     values.put(MediaStore.Audio.Media.ARTIST, "My Artist"); 
     values.put(MediaStore.Audio.Media.IS_RINGTONE, false); 
     values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true); 
     values.put(MediaStore.Audio.Media.IS_ALARM, false); 
     values.put(MediaStore.Audio.Media.IS_MUSIC, false); 

     Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath()); 
     String selection = String.format("%s = ?", MediaStore.MediaColumns.TITLE); 
     c = getContentResolver().query(uri, null, selection, new String[]{mediaTitle}, null); // RETURNS NULL only on Samsung Galaxy S4 with Lollipop 

     if (c.moveToFirst()) { 
      return uri.buildUpon().appendPath(String.valueOf(c.getInt(c.getColumnIndex(MediaStore.MediaColumns._ID)))).build(); 
     } else { 
      return getContentResolver().insert(uri, values); 
     } 

cevap

0

sonucunda başka null adlı olsun 'o yoksa herhangi insert yöntem zil eklemek olmaz çıkıyor t benzersiz ve bu Uri için sorgulamak mümkün değildi bu yüzden zaten orada bir şey eklemek için çalışıyordum.

yapayım var ya sabittir diğer cihazlarda işe yaradı ya bunu, çünkü garip bunun için sorgulamak yolu,:

getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + k.getAbsolutePath() + "\"", null); 

zaten var dosyaları siler query önce ve bana insert yeniden izin verdi ve şimdi insert artık boş dönmez. Biraz kaba kuvvet çözümü, ama bana yardımcı oldu.

+0

Muhtemelen 'getContentResolver(). Update (…' yerine kullanmalısınız) – Fhl

İlgili konular