首页 文章

从原始文件夹打开音乐文件,使用Android上的意图在设备的默认应用程序上播放

提问于
浏览
-1

我正在尝试写一个打开设备默认音乐播放器的意图来播放我在android工作室项目中的原始文件夹上的音乐文件(mp3) . 到目前为止,我找到了意图的代码,但我得到了如何命令它打开特定的mp3文件,在媒体播放器上播放到目前为止,我写了这样的东西,试图找到文本的文件,但我不能把它们放在一起我应该怎么做mp3的文件名是“greeceMusic”,如果它有帮助的话 . 我到目前为止的代码是

`@Override public void onClick(View view){

Intent musicIntent = new Intent();

            //use Action VIEW to launch app

            musicIntent.setAction(Intent.ACTION_VIEW);

            File file = new File("android.resource://" + getPackageName() + "/" + R.raw.greeceMusic);

            musicIntent.setDataAndType(Uri.fromFile(file), "audio/*");

            startActivity(musicIntent);
        }`

任何帮助都会得到很好的感谢,因为我真的很新,我需要所有的帮助,因为当我在论坛中发现类似的帖子时,我不能帮助我很多因为我无法把它放在一起指示先谢谢

1 回答

  • 0
    File file = new File("android.resource://" + getPackageName() + "/" + R.raw.greeceMusic);
    

    首先,资源是开发计算机上的文件 . 它不是设备上的文件 .

    其次,您不能将 Uri 语法与 android.resource://File 一起使用 .

    第三,在创建像这样的 Intent 时不要使用通配符MIME类型 . 您知道实际的MIME类型是什么,因为您将媒体打包到您的应用中 . 因此,请使用实际的MIME类型 .

    第四,即使您正确地创建了 Uri (例如, Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.greeceMusic) ),也不太可能许多设备具有能够播放以原始资源形式发布的音乐文件的应用 .

    您最好的选择是将资源内容复制到文件(例如, Resources 上的 openRawResource() ,然后将字节从 InputStream 复制到 FileOutputStream ),然后尝试播放该文件(例如,通过 FileProvider 提供) .

相关问题