You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 13下使用VLC Player播放视频失败问题求助

Android 13下调用VLC播放URL视频失败的修复方案

问题背景

旧版本Android中调用VLC播放URL视频正常,但在Android 13上出现ActivityNotFoundException,原代码如下:

int vlcRequestCode = 42;
Uri uri = Uri.parse(myreceivedLink);
Intent i = new Intent(Intent.ACTION_VIEW);
i.setPackage("org.videolan.vlc");
i.setDataAndTypeAndNormalize(uri, "video/*");
i.putExtra("title", title);
i.putExtra("from_start", false);
i.setComponent(new ComponentName("org.videolan.vlc","org.videolan.vlc.gui.video.VideoPlayerActivity"));
startActivityForResult(i, vlcRequestCode);

报错信息:

W/System.err: android.content.ActivityNotFoundException: Unable to find explicit activity class {org.videolan.vlc/org.videolan.vlc.gui.video.VideoPlayerActivity}; have you declared this activity in your AndroidManifest.xml, or does your intent not match its declared <intent-filter>?

修复建议

1. 移除显式指定的ComponentName

VLC的内部Activity路径可能随版本更新发生变化,且Android 13的包可见性限制会阻止直接访问其他应用的内部组件。移除setComponent调用,改用隐式Intent让系统自动匹配VLC的正确播放Activity:

int vlcRequestCode = 42;
Uri uri = Uri.parse(myreceivedLink);
Intent i = new Intent(Intent.ACTION_VIEW);
i.setPackage("org.videolan.vlc");
i.setDataAndTypeAndNormalize(uri, "video/*");
i.putExtra("title", title);
i.putExtra("from_start", false);
// 移除显式Component指定,让系统匹配VLC的对应Activity
startActivityForResult(i, vlcRequestCode);

2. 添加Android 13包可见性声明

在AndroidManifest.xml中添加queries标签,声明对VLC应用的访问权限,确保系统允许你的应用查询VLC的组件:

<manifest ...>
    ...
    <queries>
        <package android:name="org.videolan.vlc" />
    </queries>
    ...
</manifest>

3. 兼容VLC版本差异

确保用户设备上安装的是最新版VLC,旧版VLC可能未适配Android 13的新特性。如果必须指定VLC,保留setPackage即可,无需硬编码内部Activity路径。

内容的提问来源于stack exchange,提问作者Stefan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 07:05:42