2

我正在尝试从最近删除我的应用程序(按下“方形”按钮时获得的应用程序列表,以避免误解)。我发现下面的代码可以做到这一点,并且运行良好。问题是该应用的最低 SDK = 19,因此无法在旧设备上运行。我无论如何都找不到在互联网上这样做。有人知道方法吗?

编辑:我知道我可以使用新活动并立即关闭它,但我想避免这种情况

EDIT2:这必须以编程方式完成,因为它取决于用户的偏好

//remove the app from recents. TODO-background doesn't remove if app list button is pressed instead of home
if(android.os.Build.VERSION.SDK_INT >= 21) {
    ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    if (am != null) {
        List<ActivityManager.AppTask> tasks = am.getAppTasks();
        if (tasks != null && tasks.size() > 0) {
            tasks.get(0).setExcludeFromRecents(true);
        }
    }
} else {
    //TODO-background need to find a way for API 19 and 20
}

PS如果有人知道解决第一个TODO问题的方法,欢迎(我最终会打开另一个问题)

4

2 回答 2

0
String nameOfProcess = "com.accurate.compass.directionfinder.map";
    ActivityManager  manager = (ActivityManager)getActivity().getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningAppProcessInfo> listOfProcesses = manager.getRunningAppProcesses();
    for (ActivityManager.RunningAppProcessInfo process : listOfProcesses)
    {
        if (process.processName.contains(nameOfProcess))
        {
            // Ends the app
            manager.restartPackage(process.processName);
            break;
        }
    }
于 2018-12-22T08:05:52.993 回答
-1

如果您只是希望它不在最近显示中,您应该使用简单的一行代码:从最近删除


从您的清单文件搜索中,您的应用程序活动标记在哪里:

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/my_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity" 
              android:excludeFromRecents= "true" >

如果您不希望您的应用在关闭时显示在最近的列表中,那么上面代码中的注释android:excludeFromRecents= "true"正是您想要的。

它适用于 API 11 到 API 27。希望它有所帮助

于 2018-04-26T15:05:58.537 回答