android 10.0录制屏幕报错. Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE
- 更多其他页面-自定义View-实用功能合集:点击查看
报错原因
Android10.0以上的录制屏幕需要获取到FOREGROUND_SERVICE权限
Android10.0以上实例化mediaProjection需要在service里进行
Android10.0以上录制屏幕需要添加notification,提醒用户该app正在录制屏幕
Caused by: java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
报错解决 (这里默认你已经写好了正常的录制屏幕流程)
- 在
AndroidManifest.xml内的service添加foregroundServiceType
android:foregroundServiceType="mediaProjection"
- 在申请录屏幕权限后的返回数据
onActivityResult内对sdk进行判断,并实现startForegroundService,这样我们就可以在service内进行初始化mediaProjection了
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
screenRecordService.setMediaProject(MediaProject); //将MediaProject传进service里,这个medieaProject应该为 null
screenRecordService.setMediaProjectionManager(MediaProjectionManager); //将mediaProjectionManager传进service里,这个manager你应该已经在`ServiceConnection`时实例化好了()

最低0.47元/天 解锁文章
736

被折叠的 条评论
为什么被折叠?



