从 Service 中启动 Activity 以及手机截屏

关于 android 截屏, 在 Service 中实现后台截屏

记得上一次写 android 代码可能在十年前了,那时用的是eclipse开发,现在全忘记了。

这次用 android studio 捣鼓快一周时间,才做完一个小玩意。

 

android 5.1

因为电脑配置比较低,无法运行模拟器,我是在一台旧的手机上(meizu note 2)进行usb调试,测试截屏时弹出一次权限提示对话框,可以选择不再提示, 并且不需要【悬浮窗】权限, 也不需要将 Service 设置为前台 Service, 就可以正常截屏。

 

android 11

代码写好后,放到 android 11 上运行闪退,经过两天不懈的努力,终于把截屏的事情搞清楚了。

1. 在准备截屏前, Service 要设置为 前台Service

Intent notificationIntent = new Intent(this, MainActivity.class);

Notification notification = notificationBuilder.build(); //通知

...

startForeground(1, notification); //必须使用此方法显示通知

同时再加两个权限配置:

<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>

给 Service 也要加上特有的权限:

<service
            android:name=".ScreenService"
            android:enabled="true"
            android:exported="true"
            android:foregroundServiceType="mediaProjection"
            ></service>

 

2. 每一次的截屏都会弹出权限对话框, 不像 android 5.1 那样可以选择不再提示

3. 在应用的权限管理中,要给应用加上悬浮窗权限

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

 

在 service 中启动一个 Activity, 经常遇到无法激活的情况。

startActivity(intent);

折腾一天,才找到原因:原来在service中激活这个Activity需要开启悬浮窗权限

真没想到,会是这个原因。

 

看来 android 每一个版本变化真的很大,安全限制越来越严格。

posted @ 2022-10-22 20:08  personnel  阅读(280)  评论(0编辑  收藏  举报
友情链接:图片批量处理工具 gif动态图制作工具 制作电子相册 图片排版工具 制作淘宝主图视频 MKScript 鼠标键盘自动化脚本语言