在我的应用程序中,用户将选择应用程序然后处理的音频文件。问题是,为了让应用程序执行我希望它对音频文件执行的操作,我需要 URI 为文件格式。当我使用Android的原生音乐播放器浏览app中的音频文件时,URI是一个内容URI,看起来是这样的:
content://media/external/audio/media/710
但是,使用流行的文件管理器应用程序 Astro,我得到以下信息:
file:///sdcard/media/audio/ringtones/GetupGetOut.mp3
后者对我来说更容易使用,但我当然希望应用程序具有用户选择的音频文件的功能,而不管他们使用什么程序来浏览他们的收藏。所以我的问题是,有没有办法将content://样式 URI 转换为file://URI?否则,您会建议我如何解决这个问题?这是调用选择器的代码,供参考:
content://
file://
Intent ringIntent = new Intent(); ringIntent.setType("audio/mp3"); ringIntent.setAction(Intent.ACTION_GET_CONTENT); ringIntent.addCategory(Intent.CATEGORY_OPENABLE); startActivityForResult(Intent.createChooser(ringIntent, "Select Ringtone"), SELECT_RINGTONE);
我对内容 URI 执行以下操作:
m_ringerPath = m_ringtoneUri.getPath(); File file = new File(m_ringerPath);
然后用所述文件做一些 FileInputStream 的东西。
只需用于从 URIgetContentResolver().openInputStream(uri)获取。InputStream
getContentResolver().openInputStream(uri)
InputStream
http://developer.android.com/reference/android/content/ContentResolver.html#openInputStream(android.net.Uri)