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
相关产品推荐
相关产品推荐

