【Android】在Recent列表中隐藏App

本文介绍了一种在Android系统中让应用不显示在Recent列表的方法,即通过在AndroidManifest文件中为Activity设置属性android:excludeFromRecents=true来实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

recent列表,指的是:在Android中长按Home键所显示的最近使用的程序缩略图。

一般App运行之后,都会在这个列表中留下纪录,且许多用户习惯通过这个列表直接杀掉App。

不过最近发现自己在用的一款闹钟App在启动后,按back或者home键后,都不会在recent列表中留下任何纪录,所以非常好奇它的实现原理。于是反编译了它的Apk,发现在AndroidManifest中给Activity标签添加:

android:excludeFromRecents="true"
即可实现在recent列表中隐藏App





Android 中,Recent App 按钮是系统级别的按钮,通常不能完全禁用。但是,我们可以通过一些技巧来隐藏或者覆盖这个按钮。 下面是一种实现方法: 1. 创建一个透明的 Activity,覆盖在 Recent App 按钮上面,并且将其设置为全屏。 2. 在该 Activity 的 onCreate() 方法中,禁用 Recent App 按钮。具体实现代码如下: ``` @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 隐藏状态栏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // 隐藏导航栏 getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE); // 禁用 Recent App 按钮 try { Object service = getSystemService("statusbar"); Class<?> statusBarManager = Class.forName("android.app.StatusBarManager"); Method disableRecent = statusBarManager.getMethod("disable", int.class); disableRecent.invoke(service, DISABLE_RECENT); } catch (Exception e) { e.printStackTrace(); } } ``` 3. 将该 Activity 添加到 AndroidManifest.xml 文件中,并设置为启动 Activity。 ``` <activity android:name=".DisableRecentActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> ``` 4. 在该 Activity 的 onDestroy() 方法中,恢复 Recent App 按钮。具体实现代码如下: ``` @Override public void onDestroy() { super.onDestroy(); // 恢复 Recent App 按钮 try { Object service = getSystemService("statusbar"); Class<?> statusBarManager = Class.forName("android.app.StatusBarManager"); Method disableRecent = statusBarManager.getMethod("disable", int.class); disableRecent.invoke(service, ENABLE_RECENT); } catch (Exception e) { e.printStackTrace(); } } ``` 需要注意的是,这种方法只能隐藏或者覆盖 Recent App 按钮,并不能完全禁用它。同时,由于该方法需要创建一个透明的 Activity,可能会影响系统性能和用户体验。因此,我们建议在使用该方法时慎重考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值