android 卸载其他app,android-如何从最近的应用程序列表中删除应用程序?

android-如何从最近的应用程序列表中删除应用程序?

我猜想Android不会允许人们这样做,因为他们认为自己对任务/应用程序具有完美的处理能力。 但是,我确实需要这样做。

我有一个活动A作为应用程序的入口。 在该活动中,它会读取首选项并确定要开始的活动(例如B或C)。此后,活动本身就完成了。 因此,活动A永远不会出现在用户身上。

我的应用程序将内容存储在sdcard上,并不断对其进行读取。 因此,当卸载sdcard时,我需要向用户显示该sdcard不可用的消息,而不是打开B或C。我在A上设置了一个检查,以在sdcard不可使用时显示该消息。 显示该消息时,A将不会尝试启动B或C。

如果用户仅从应用程序启动器进入我的应用程序,那么事情将完美地进行。 但是,我发现用户也可以通过长按主页来输入我的应用程序,如果他最近打开过它,则可以从最近的应用程序列表中选择它。 当用户执行此操作时,它会跳过A并直接转到B或C。我都没有对它们进行检查,因此当我尝试访问sdcard时会引发异常,并弹出强制关闭对话框。

我可以简单地将支票同时移到B和C来解决此问题。 但是将来,从A开始的活动数量将会增加。 如果有6个,则需要将此支票复制到6个地方。 不用说,这看起来非常丑陋,并且是维护的噩梦。

因此,最好的解决方法是在卸载sdcard时从最近的应用程序列表中删除我的应用程序。 但是,我找不到该怎么做。 即使杀死该进程或使用ActivityManager.restartPackage,它仍会出现在列表中。 谁能告诉我如何从列表中删除它?

user412759 asked 2019-11-18T08:51:39Z

9个解决方案

201 votes

尝试

android:excludeFromRecents="true" ...

在您的AndroidManifest.xml的活动声明中。

whlk answered 2019-11-18T08:52:05Z

17 votes

其他属性可以帮助您的活动与同一包中的其他活动隔离。

android:name=".aActivity"

android:excludeFromRecents="true"

android:taskAffinity=""

android:launchMode="singleInstance">

Kislingk answered 2019-11-18T08:52:29Z

16 votes

只需在清单文件中的活动标记中添加android:excludeFromRecents="true"。

user632905 answered 2019-11-18T08:52:52Z

12 votes

您需要设置AndroidManifest.xml:

...

android:excludeFromRecents="true"

...

或从开始此活动

intent.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);

以及在AndroidManifest.xml中

...

android:label=""

...

将标签设置为空将使此活动不会显示在“最近使用的应用程序”列表中。

jackylalala answered 2019-11-18T08:53:35Z

4 votes

我不建议这样做,但我会尝试以下选择:

选项1:

在B和C上添加:

protected void onPause() {

finish();

}

选项2:

将AndroidManifest中的B和C添加以下内容:

android:noHistory= "true"

Macarse answered 2019-11-18T08:54:16Z

4 votes

从最新的应用程序列表中删除您的应用程序可能是不可能的,而且绝对不是最佳解决方案。 这只会使期望所有应用程序表现相似的用户感到困惑。

无论如何,我认为这不会解决您的问题。 如果用户在进行活动B时点击主页,然后从主页中选择您的应用,它将再次启动活动B。

有很多方法可以解决实际问题。 一个简单的方法可能是创建一个基本活动,该活动执行SD卡检查,并从中扩展所有活动。 这样,支票只在一个地方。

Cheryl Simon answered 2019-11-18T08:54:53Z

2 votes

好的,我知道可以在2.3.4中完成。 打开时,应用程序“幼儿锁”会清除最近的应用程序列表,因此,如果您长按主键,则“锁定”手机时,该列表为空白。 不幸的是我还没找到如何做。 因此,对于任何正在寻找并阅读postf并表示不可能的人,请不要放弃。 我肯定不是。

MastaCarlos answered 2019-11-18T08:55:18Z

0 votes

如果您想退出Button上的Application,请使用以下代码:

Intent intent = new Intent(Intent.ACTION_MAIN);

intent.addCategory(Intent.CATEGORY_HOME);

startActivity(intent);

要杀死完整的应用程序并将其从Runningapp列表中删除,请通过其pid(讨厌)杀死该应用程序...在上述代码之前使用此行。

int pid = android.os.Process.myPid();

android.os.Process.killProcess(pid);

Mahmouf Mrad answered 2019-11-18T08:55:49Z

0 votes

尝试这个,它将完成所有活动并从最近的应用中删除应用

private fun killCurrentApp() {

val am = this.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager?

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

val appTasks = am!!.getAppTasks()

if (appTasks.size > 0) {

val appTask = appTasks.get(0)

appTask.finishAndRemoveTask()

}

}

}

Tushar Saha answered 2019-11-18T08:56:14Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值