2016-03-09 40 views
0

我在以下情況下遇到了一些問題。Android GET_CONTENT音頻文件

LOAD_AUDIO_REQUEST_CODE = 1000; 

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
intent.setType("audio/*"); 
startActivityForResult(intent, LOAD_AUDIO_REQUEST_CODE); 

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    Uri uri = data.getData(); 
    Log.i(TAG, "uri path : " uri.getPath()); 
} 

在onActivityResult數據路徑指示/文件/音頻:458。

,但我希望得到像/storage/emulated/0/Music/music0.mp3

如何轉換/文件/音頻anothor路徑:458 /storage/..../music0.mp3

幫助

回答

0

在onActivityResult數據路徑指示/文件/音頻:458。

您收到content:Uri。在較新版本的Android上這是相當正常的。未來版本的Android可能會阻止file:Uri值。

如何轉換/文件/音頻:458 /storage/..../music0.mp3

你不知道。不一定要有與給定Uri相關聯的文件。這Uri可能指向:

  • 在外部存儲設備的本地文件
  • 內部存儲本地文件的其他應用程序
  • 移動存儲本地文件
  • 經過加密和本地文件需要立即解密
  • 保存在數據庫的BLOB列中的字節流
  • 需要先由其他應用下載的一段內容
  • ...等等

相反,使用ContentResolver和:

  • openInputStream()與內容相關聯的讀取字節
  • getType()獲得與相關聯的MIME類型content
  • query() and the OpenableColumns to get the size and display name associated with the content