第三方 视频播放器

implementation 'fm.jiecao:jiecaovideoplayer:4.8.3'//视频播放
 <fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard
        android:layout_weight="5"
        android:id="@+id/player_list_video"
        android:layout_width="match_parent"
        android:layout_height="220dp" />
  JCVideoPlayerStandard player = findViewById(R.id.player_list_video);
        boolean setUp = player.setUp("http://ips.ifeng.com/video19.ifeng.com/video09/2014/06/16/1989823-102-086-0009.mp4", JCVideoPlayer.SCREEN_LAYOUT_LIST, "");
        if (setUp) {
            Glide.with(MainActivity.this).load("http://a4.att.hudong.com/05/71/01300000057455120185716259013.jpg").into(player.thumbImageView);
        }

 相对于 原生的videoview 操作起来比较简单 

 

#############更新

jiaozi更新了,下边是最新依赖

 

compile 'cn.jzvd:jiaozivideoplayer:7.0.5'

地址附上:

https://github.com/Jzvd/JiaoZiVideoPlayer

 

 

 

<think>好的,我现在需要帮助用户将第三方视频播放器设置为Android系统的默认播放器。根据用户之前的问题和我之前的回答,用户可能已经了解了一些基本步骤,比如声明权限、配置Intent过滤器等,但现在需要更详细的指导,尤其是结合提供的引用内容。 首先,用户提到了引用[1]中关于默认Launcher的设置,这可能与处理多个应用的默认设置有关。我需要看看是否有类似的方法可以应用到视频播放器上。比如,在系统内置多个Launcher时,通过过滤currentResolveList来排除默认的Launcher3,设置第三方应用为默认。这可能意味着在视频播放器的情况下,需要处理Intent的解析,确保第三方播放器被优先选择。 接下来,引用[2]和[4]提到了第三方服务与系统集成的兼容性问题,比如自动填充服务和地图应用的调用。这可能涉及到Intent的正确配置,确保第三方播放器能够响应系统发出的媒体播放请求。需要检查Intent过滤器的配置是否全面,覆盖所有相关的MIME类型和文件协议。 引用[3]提到了加载第三方jar包并调整优先级,这可能涉及到系统级修改,需要系统签名或root权限。用户之前的回答中提到了系统级修改需要替换系统路径下的文件,这可能适用于将第三方播放器内置为系统应用的情况,但普通用户可能没有这样的权限,因此需要区分不同情况给出建议。 用户的问题核心是将第三方播放器设为默认,可能需要处理几个方面:声明正确的权限、配置Intent过滤器、触发系统默认应用选择、处理高版本Android的兼容性问题,以及可能的系统级修改。需要确保步骤清晰,并注意不同Android版本的差异,比如Android 11+的包可见性限制,需要添加<queries>声明。 另外,用户之前的回答中提到了WRITE_SECURE_SETTINGS权限,这需要系统签名或ADB授权,普通应用可能无法获取。因此,可能需要指导用户如何通过ADB授权,或者说明需要系统级别的权限才能实现。 还需要考虑如何检测当前默认播放器,以及不同厂商ROM的可能差异,如引用[5]提到的市场成熟带来的碎片化问题。可能需要提醒用户注意厂商定制系统可能存在的限制,并提供通用的解决方案。 最后,需要确保回答结构清晰,分步骤说明,同时结合引用中的相关点,比如处理Intent过滤和系统默认设置的调整,可能参考引用[1]中的方法遍历和修改ResolveList,但需要确认这在视频播放器场景下的可行性。 总结下来,回答应包括以下部分:权限声明、Intent过滤器配置、触发默认设置、高版本兼容处理、系统级修改(可选)、注意事项(如厂商差异、权限限制),以及相关问题推荐。需要确保每个步骤都有代码示例或配置示例,并指出可能的陷阱和解决方法。</think>根据Android系统权限机制和Intent处理规则,结合第三方应用默认设置的技术实现,以下是完整的解决方案: ### 一、基础配置方案(非系统级应用) #### 1. 增强型Intent过滤器配置 在AndroidManifest.xml中声明完整的媒体处理能力: ```xml <activity android:name=".PlayerActivity"> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <!-- 视频协议支持 --> <data android:scheme="http"/> <data android:scheme="https"/> <data android:scheme="content"/> <data android:scheme="file"/> <!-- MIME类型覆盖 --> <data android:mimeType="video/*"/> <data android:mimeType="audio/*"/> <data android:mimeType="application/octet-stream"/> </intent-filter> </activity> ``` #### 2. 动态权限请求(Android 6.0+) ```java if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (!Settings.System.canWrite(context)) { Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS); intent.setData(Uri.parse("package:" + context.getPackageName())); startActivityForResult(intent, REQUEST_CODE_WRITE_SETTINGS); } } ``` ### 二、系统级深度集成方案 #### 1. 修改默认应用配置(需系统签名) 参考Launcher默认设置机制[^1],在framework层修改PackageManagerService: ```java // 修改resolveIntent()方法逻辑 List<ResolveInfo> resolveInfos = queryIntentActivities(intent, flags); Iterator<ResolveInfo> iterator = resolveInfos.iterator(); while (iterator.hasNext()) { ResolveInfo info = iterator.next(); if ("com.android.gallery3d".equals(info.activityInfo.packageName)) { iterator.remove(); // 移除系统默认播放器 } } ``` #### 2. 系统签名配置(Android.mk) ```makefile LOCAL_CERTIFICATE := platform # 系统签名标识 LOCAL_PRIVILEGED_MODULE := true ``` ### 三、兼容性增强措施 #### 1. Android 11+包可见性配置 ```xml <queries> <intent> <action android:name="android.intent.action.VIEW" /> <data android:mimeType="video/*" /> </intent> <intent> <action android:name="android.intent.action.VIEW" /> <data android:mimeType="audio/*" /> </intent> </queries> ``` #### 2. 文件协议处理优化 ```java Uri uri = Uri.parse(mediaPath); if ("file".equals(uri.getScheme())) { // Android 7.0+文件协议适配 uri = FileProvider.getUriForFile(context, context.getPackageName() + ".provider", new File(uri.getPath())); } intent.setDataAndType(uri, getMimeType(uri)); ``` ### 四、默认状态检测与重置 #### 1. 检测当前默认播放器 ```java Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.parse("file://test.mp4"), "video/*"); ResolveInfo info = getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY); String defaultPackage = (info != null) ? info.activityInfo.packageName : null; ``` #### 2. 强制清除默认设置 ```java PackageManager pm = getPackageManager(); pm.clearPackagePreferredActivities("com.android.gallery3d"); // 清除系统播放器默认设置 ``` ### 五、厂商适配建议 1. **华为EMUI**:需额外申请`com.huawei.permission.sec.MDM_APP_MANAGEMENT`权限 2. **小米MIUI**:在设置-隐私保护-特殊权限设置中开启"修改系统设置"白名单 3. **三星OneUI**:需在应用信息页单独启用"设为默认"选项
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值