android.permission.REMOVE_TASKS:权限被拒绝
android.permission.REMOVE_TASKS : Permission denied
我想删除最近的任务列表。通过谷歌搜索,我从 Whosebug 中找到了一些 links。但其中 none 已得到正确回答。只有一个 link
Android, how to clear the recent task list which could get from Home button in most phone? Reflection is a possible way?
已经展示了一种使用反射的方法。但是现在,我面临一个问题,android.permission.REMOVE_TASKS被拒绝了。给出下面的代码,你可以看到在try-catch子句中,当权限被拒绝时,代码移动到catch()子句。
enter code here
private ActivityManager mActivityManager = null;
私有方法 mRemoveTask;
public MyActivityManager(Context context) {
try {
Class<?> activityManagerClass = Class.forName("android.app.ActivityManager");
mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
mRemoveTask = activityManagerClass.getMethod("removeTask", new Class[] { int.class, int.class });
mRemoveTask.setAccessible(true);
}
catch ( ClassNotFoundException e ) {
Log.i("MyActivityManager", "No Such Class Found Exception", e);
}
catch ( Exception e ) {
Log.i("MyActivityManager", "General Exception occurred", e);
}
}
/**
* If set, the process of the root activity of the task will be killed
* as part of removing the task.
*/
public static final int REMOVE_TASK_KILL_PROCESS = 0x0001;
/**
* Completely remove the given task.
*
* @param taskId Identifier of the task to be removed.
* @param flags Additional operational flags. May be 0 or
* {@link #REMOVE_TASK_KILL_PROCESS}.
* @return Returns true if the given task was found and removed.
*/
public boolean removeTask(int taskId, int flags) {
try {
return (Boolean) mRemoveTask.invoke(mActivityManager, Integer.valueOf(taskId), Integer.valueOf(flags) );
} catch (Exception ex) {
Log.i("MyActivityManager", "Task removal failed", ex);
}
return false;
}
public void clearRecentTasks() {
List<RecentTaskInfo> recents = mActivityManager.getRecentTasks(1000, ActivityManager.RECENT_IGNORE_UNAVAILABLE);
// Start from 1, since we don't want to kill ourselves!
for( int i=1; i < recents.size(); i++ ) {
removeTask( recents.get(i).persistentId, 0);
}
}
}`
这里需要说明的是,这三个权限我都用过android.permission.GET_TASKS、android.permission.REORDER_TASKS、android.permission.REMOVE_TASKS
一些消息来源说要终止后台进程,但这不会删除最近的应用程序列表。
所以我需要一些建议。
android.permission.REMOVE_TASKS is denied
该权限是 signature
级权限。只有当您的应用使用与设备固件相同的签名密钥签名时,您才能使用它。
我想删除最近的任务列表。通过谷歌搜索,我从 Whosebug 中找到了一些 links。但其中 none 已得到正确回答。只有一个 link
Android, how to clear the recent task list which could get from Home button in most phone? Reflection is a possible way?
已经展示了一种使用反射的方法。但是现在,我面临一个问题,android.permission.REMOVE_TASKS被拒绝了。给出下面的代码,你可以看到在try-catch子句中,当权限被拒绝时,代码移动到catch()子句。
enter code here
private ActivityManager mActivityManager = null; 私有方法 mRemoveTask;
public MyActivityManager(Context context) {
try {
Class<?> activityManagerClass = Class.forName("android.app.ActivityManager");
mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
mRemoveTask = activityManagerClass.getMethod("removeTask", new Class[] { int.class, int.class });
mRemoveTask.setAccessible(true);
}
catch ( ClassNotFoundException e ) {
Log.i("MyActivityManager", "No Such Class Found Exception", e);
}
catch ( Exception e ) {
Log.i("MyActivityManager", "General Exception occurred", e);
}
}
/**
* If set, the process of the root activity of the task will be killed
* as part of removing the task.
*/
public static final int REMOVE_TASK_KILL_PROCESS = 0x0001;
/**
* Completely remove the given task.
*
* @param taskId Identifier of the task to be removed.
* @param flags Additional operational flags. May be 0 or
* {@link #REMOVE_TASK_KILL_PROCESS}.
* @return Returns true if the given task was found and removed.
*/
public boolean removeTask(int taskId, int flags) {
try {
return (Boolean) mRemoveTask.invoke(mActivityManager, Integer.valueOf(taskId), Integer.valueOf(flags) );
} catch (Exception ex) {
Log.i("MyActivityManager", "Task removal failed", ex);
}
return false;
}
public void clearRecentTasks() {
List<RecentTaskInfo> recents = mActivityManager.getRecentTasks(1000, ActivityManager.RECENT_IGNORE_UNAVAILABLE);
// Start from 1, since we don't want to kill ourselves!
for( int i=1; i < recents.size(); i++ ) {
removeTask( recents.get(i).persistentId, 0);
}
}
}`
这里需要说明的是,这三个权限我都用过android.permission.GET_TASKS、android.permission.REORDER_TASKS、android.permission.REMOVE_TASKS 一些消息来源说要终止后台进程,但这不会删除最近的应用程序列表。 所以我需要一些建议。
android.permission.REMOVE_TASKS is denied
该权限是 signature
级权限。只有当您的应用使用与设备固件相同的签名密钥签名时,您才能使用它。