我正在尝试创建一个只提供edittext和imagebutton的应用程序。如果点击了按钮,则想法是将相册添加到播放列表中,在edittext框中命名。相册应随机选择。不言而喻,专辑曲目应该是正确的顺序。 我可以稍后添加更多功能,例如。保存,覆盖,删除等 我有界面,但我正在努力与代码。我有点得到ContentProviders的概念。 所以代码需要:
访问播放列表,我认为这是通过使用MediaStore.Audio.Playlists实现的
访问相册,我认为这是通过使用MediaStore.Audio.Albums实现的
添加到播放列表
我有以下代码(从本网站获得的大部分内容。非常感谢btw)访问播放列表,但崩溃时出现Null Exception错误。
public void checkforplaylists()
{
//Get a cursor over all playlists.
final ContentResolver resolver= MediaProvider.mContentResolver;
final Uri uri=MediaStore.Audio.Playlists.INTERNAL_CONTENT_URI;
final String id=MediaStore.Audio.Playlists._ID;
final String name=MediaStore.Audio.Playlists.NAME;
final String[]columns={id,name};
final Cursor playlists= resolver.query(uri, columns, null, null, null);
if(playlists==null)
{
Log.e(TAG,"Found no playlists.");
return;
}
return;
}
任何可以提供帮助的人?
答案 0 :(得分:1)
我认为你的意思是NullPointerException
,这意味着你的一个作业是空的,然后你试图访问你想要它的对象的成员。最有可能的是resolver
,但要确保您需要报告的行号和/或使用调试器逐步执行该行号。
答案 1 :(得分:1)
这很有效。使用ContentResolver时,需要使用Context(this)。
public void checkforplaylists(Context context)
{
ContentResolver cr = context.getContentResolver();
final Uri uri=MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI;
final String id=MediaStore.Audio.Playlists._ID;
final String name=MediaStore.Audio.Playlists.NAME;
final String[]columns={id,name};
final Cursor playlists= cr.query(uri, columns, null, null, null);
if(playlists==null)
{
Log.e(TAG,"Found no playlists.");
return;
}
Log.e(TAG,"Found playlists.");
return;
}
答案 2 :(得分:1)
使用此代码,将起作用
public boolean addPlaylist(String pname) {
Uri playlists = MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI;
Cursor c = resolver.query(playlists, new String[] { "*" }, null, null,
null);
long playlistId = 0;
c.moveToFirst();
do {
String plname = c.getString(c
.getColumnIndex(MediaStore.Audio.Playlists.NAME));
if (plname.equalsIgnoreCase(pname)) {
playlistId = c.getLong(c
.getColumnIndex(MediaStore.Audio.Playlists._ID));
break;
}
} while (c.moveToNext());
c.close();
if (playlistId != 0) {
Uri deleteUri = ContentUris.withAppendedId(playlists, playlistId);
Log.d(TAG, "REMOVING Existing Playlist: " + playlistId);
// delete the playlist
resolver.delete(deleteUri, null, null);
}
Log.d(TAG, "CREATING PLAYLIST: " + pname);
ContentValues v1 = new ContentValues();
v1.put(MediaStore.Audio.Playlists.NAME, pname);
v1.put(MediaStore.Audio.Playlists.DATE_MODIFIED,
System.currentTimeMillis());
Uri newpl = resolver.insert(playlists, v1);
Log.d(TAG, "Added PlayLIst: " + newpl);
flag=true;
return flag;
}