郑重声明:本文展示的过程是在模拟环境中进行的,只为学习研究之用,如有人用于非法用途,产生的后果笔者不负任何责任。
看看“流氓应用”都是怎么隐藏起来在后台运行的,引以为戒。
设置页面为透明
- 在
AndroidManifest.xml
中,在需要设置为透明的activity标签中添加:
1 | android:theme="@android:style/Theme.Translucent.NoTitleBar" |
在Activity的
onCreate
方法中添加:1
2
3
4
5
6
7
8// 设置Activity宽高
Window window = getWindow();
WindowManager.LayoutParams windowLayoutParams = window.getAttributes(); // 获取对话框当前的参数值
windowLayoutParams.width = 1;
windowLayoutParams.height = 1;
// 隐藏界面
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
从近期任务中隐藏起来
在启动页Activity的标签中添加配置:
1 | android:excludeFromRecents="true" |
虽然在近期任务中不可见了,但是清理后台还是能被清理掉。
后台运行不被清理
这个要根据手机品牌和型号来具体设置。
大体思路就是将应用加入电池优化白名单,后台清理白名单。可以参考:https://users.easemon.com/zh
设置前台服务
有时候需要从后台Service通过Intent启动Activity,但是从Android Q开始做了限制, 需要改为从前台Service启动Activity。
首先适配服务启动方法:
1 | public static void startService(Context context) { |
前台服务会在通知栏显示服务相关信息,在Service的onCreate方法中进行配置:
1 |
|
怎么隐藏此通知呢,在onStartCommand
方法中将通知移除即可:
1 | stopForeground(true); |