最佳答案
在我的应用程序用户是选择一个音频文件,然后应用程序处理。问题是,为了让应用程序做我想让它做的音频文件,我需要的 URI 是文件格式。当我使用 Android 的本地音乐播放器浏览应用程序中的音频文件时,URI 是一个内容 URI,看起来像这样:
content://media/external/audio/media/710
但是,使用流行的文件管理器应用程序 Astro,我得到了以下结果:
file:///sdcard/media/audio/ringtones/GetupGetOut.mp3
后者对于我来说更容易使用,但是当然我希望应用程序能够具有用户选择的音频文件的功能,而不管他们用什么程序来浏览他们的集合。所以我的问题是,有没有一种方法可以将 content://
样式的 URI 转换成 file://
URI?否则,你会建议我如何解决这个问题?下面是调用选择器的代码,以供参考:
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 的事情。