【问题标题】:Android: Start Default Audio Intent from res fileAndroid:从 res 文件启动默认音频意图
【发布时间】:2018-07-31 07:56:58
【问题描述】:

我正在尝试使用我应用中的默认音频播放器播放 res/raw 目录中的音频文件。

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(String.format("android.resource://%s/%s/%s",getContext().getPackageName(),"raw","fade")), "audio/*");     

startActivity(intent);

但是,每次我遇到异常时:

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=android.resource://com.example.android.punjabi/raw/fade typ=audio/* launchParam=MultiScreenLaunchParams { mDisplayId=0 mFlags=0 } }

我已经尝试了这里提到的方法:

Get URI of .mp3 file stored in res/raw folder in android

它仍然给了我同样的例外。

请帮忙。我不想使用 MediaPlayer 类来播放音频。我想用手机默认的音频播放器播放。

【问题讨论】:

    标签: android audio android-intent mp3


    【解决方案1】:

    没有要求任何设备的应用能够支持使用未充分利用的android:resource 方案播放来自Uri 的音频。

    要么:

    • 使用MediaPlayer自己玩,或者

    • 将该资源的内容复制到文件中,然后使用FileProvider 使用content Uri 提供它

    【讨论】:

    • 嗨 CommonsWare,使用 MediaPlayer 播放它并不是一个真正的选择。这样做,我将不得不管理播放/暂停/停止,可运行的搜索栏,保存方向更改的状态等。我希望尽可能简单。关于你的第 2 点,你能给我一些例子来实现这一点吗?或者如果我将我的文件移动到评估目录?这会有帮助吗?
    • @Manpreet:“你能给我举个例子吗?” -- 通过getResources() 在您的活动中获取Resources 对象。致电openRawResource() 以获取有关您的原始资源的InputStream。从那里开始,它就是标准的 Java I/O。 “如果我将文件移动到评估目录?这会有帮助吗?” -- 不,对不起。
    猜你喜欢
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多