Java 打开原始文件夹中的音乐文件,在android上使用intent在设备的默认应用程序上播放
我正试图写一份意向书,打开设备的默认音乐播放器,播放我在android studio项目中的原始文件夹中的音乐文件(mp3)。到目前为止,我找到了代码的意图,但我得到了堆栈如何命令它打开特定的mp3文件,并在媒体播放器上播放到目前为止,我写了这样的东西,试图找到文件的uri,但我不能把他们放在一起,我该如何做的mp3文件名是“greeceMusic”,如果它有帮助的话。到目前为止,我掌握的代码是 `@凌驾 公共void onClick(视图){ 任何帮助都将非常感谢,因为我在这方面真的是新手,我需要所有我能得到的帮助,因为当我在论坛上找到一个类似的帖子时,它对我没有太大帮助,因为我无法事先整理好说明谢谢Java 打开原始文件夹中的音乐文件,在android上使用intent在设备的默认应用程序上播放,java,android,android-intent,Java,Android,Android Intent,我正试图写一份意向书,打开设备的默认音乐播放器,播放我在android studio项目中的原始文件夹中的音乐文件(mp3)。到目前为止,我找到了代码的意图,但我得到了堆栈如何命令它打开特定的mp3文件,并在媒体播放器上播放到目前为止,我写了这样的东西,试图找到文件的uri,但我不能把他们放在一起,我该如何做的mp3文件名是“greeceMusic”,如果它有帮助的话。到目前为止,我掌握的代码是 `@凌驾 公共void onClick(视图){ 任何帮助都将非常感谢,因为我在这方面真的是新手,我
File file = new File("android.resource://" + getPackageName() + "/" + R.raw.greeceMusic);
首先,资源是开发机器上的文件,而不是设备上的文件
其次,您不能将Uri
语法与模式一起使用,例如android.resource://
,与文件一起使用
第三,在创建这样的意图时不要使用通配符MIME类型。你知道实际的MIME类型是什么,因为你是将媒体打包到应用程序中的人。因此,使用实际的MIME类型
第四,即使您正确创建了Uri
(例如,Uri.parse(“android.resource://”+getPackageName()+“/”+R.raw.greecmusic)
),也不太可能有许多设备都有能够播放以原始资源形式发布的音乐文件的应用程序
您最好的选择是将资源内容复制到文件中(例如,Resources
上的openRawResource()
,然后将InputStream
中的字节复制到FileOutputStream
),然后尝试播放该文件(例如,通过文件提供程序提供服务).您可以提取设备内存中的原始资源,并在单词后播放。
File file = new File("android.resource://" + getPackageName() + "/" + R.raw.greeceMusic);