我有这个代码,我已经在一些设备上进行了测试,除了运行Lollipop的三星Galaxy S4外,还可以使用它们。 getContentResolver().query()
方法每次都返回一个空光标。如果if / else语句转到else,因此,并尝试insert
我得到另一个null作为insert
的结果
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);
}
答案 0 :(得分:0)
原来from Tkinter import *
from PIL import ImageTk, Image
import os
root = Tk()
img = ImageTk.PhotoImage(Image.open("9.jpg"))
panel = Label(root, image = img)
panel.pack(side = "bottom", fill = "both", expand = "yes")
root.mainloop()
方法不会插入铃声,如果它不是唯一的,我无法正确查询insert
所以我试图插入已经存在的东西那里。
我应该修复我查询它的方式,这很奇怪,因为在其他设备上它可以工作,或者这样做:
Uri
在 getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + k.getAbsolutePath() + "\"", null);
之前删除已存在的文件,并允许我重新query
,现在insert
不再返回null。有点蛮力解决方案,但它帮助了我。