2012-08-17 75 views
4

我想創建一個應用程序,它只是提供一個edittext和imagebutton。如果點擊了butten,這個想法就是將一個專輯添加到在edittext框中命名的播放列表中。應該隨機選擇專輯。不用說專輯曲目應該按照正確的順序排列。 我可以在以後添加更多功能,例如。保存,覆蓋,刪除等。 我有接口,但我正在努力與代碼。我有點得到ContentProviders的概念。 所以代碼需要:如何創建播放列表

  • 訪問的播放列表,我相信這是通過使用MediaStore.Audio.Playlists

  • 訪問的相冊,我相信這是通過使用MediaStore.Audio實現來實現的。相冊

  • 添加到播放列表

我有以下代碼(從這個S取得最位伊特。謝謝btw)訪問播放列表,但它崩潰與空異常錯誤。

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

2年,我有現在成熟的應用程序稱爲播放列表管理器。在谷歌和亞馬遜上可用。 感謝所有的stackoverflow參與者。 – Theo 2014-10-29 10:17:16

回答

1

我想你的意思是NullPointerException,這意味着你的任務之一是空的,然後你嘗試訪問你想要的對象的成員。最有可能的是resolver,但要確保您需要報告的行號和/或通過調試器逐行掃描。

1

This Works。在使用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; 
} 
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; 
} 
+0

謝謝,這工作得很好! – 2017-09-12 16:49:19

相關問題