2011-02-15 123 views
0

我想瀏覽所有的音頻文件,但我越來越像錯誤應用程序可以執行此操作..這是我的代碼瀏覽活動...Android:沒有應用程序執行此操作,爲什麼?

- > private static final int SELECT_MUSIC = 1;
String selectedImagePath;

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    ((Button) findViewById(R.id.browse)).setOnClickListener(new OnClickListener() { 

     public void onClick(View arg0) { 

      // in onCreate or any event where your want the user to 
      // select a file 
      Intent intent = new Intent(); 
      intent.setType("music/*"); 
      intent.setAction(Intent.ACTION_GET_CONTENT); 
      startActivityForResult(Intent.createChooser(intent,"Select File"), SELECT_MUSIC); 
     } 
    }); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK) { 
     if (requestCode == SELECT_MUSIC) { 
      Uri selectedImageUri = data.getData(); 
      selectedImagePath = getPath(selectedImageUri); 
     } 
    } 
} 

public String getPath(Uri uri) { 
    String[] projection = {MediaStore.Images.Media.DATA}; 
    Cursor cursor = managedQuery(uri, projection, null, null, null); 
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 
} 

我也有添加權限menifest文件:: READ_PHONE_STATE 有什麼問題呢?任何想法?

謝謝..

回答

0

這意味着沒有申請執行該操作。爲什麼?因爲沒有安裝的應用程序執行該操作。它與權限無關。

您可能正在模擬器上運行此模擬器,該模擬器不包含任何目錄瀏覽器應用程序。

+0

我也試過設備,但結果是一樣的。我該怎麼辦? – Piyush 2011-02-15 05:53:21

0

您可以使用:的 intent.setType("audio/*");代替intent.setType("music/*");

然後你可以選擇的軌道,而不是一個播放列表。

你能找到一種方法來選擇播放列表嗎? 我有同樣的問題,尋找一種方法來打開並選擇播放列表。

0

setType方法僅使用MIME類型值。 如果你真的只需要處理音樂文件「音頻/」應該沒問題(如前所述)。爲了更靈活,您應該嘗試檢測文件的MIME代碼。

下面是一個代碼片段如何可能看起來像:

FileNameMap fileNameMap = URLConnection.getFileNameMap(); 
type = fileNameMap.getContentTypeFor("file://" + file.getPath()); 

或(預薑餅)

if (!file.getName().contains(".")) 
    return null; 
String ext = (String) file.getName().subSequence(
file.getName().lastIndexOf(".") + 1, 
file.getName().length()); 

MimeTypeMap mimeMap = MimeTypeMap.getSingleton(); 
type = mimeMap.getMimeTypeFromExtension(ext); 

我通常使用兩種方法的組合(使用預薑餅版本,如果第一種方法失敗)。

相關問題