Android, как очистить список последних задач, которые можно получить с помощью кнопки «Домой» в большинстве телефонов? Отражение это возможный путь?

Я пишу Launcher, он должен очистить список последних приложений / задач из системы, а не "А не было»не показывать мои приложения в списке последних задач ", но я понятия не имею об этом сейчас. Я искал в стеке потока и толькоЭта проблема соответствует, но ответ не имеет никакой помощи. Другой парень задавал те же вопросы, он упомянул RemoveTask, который поставляется с Android 4.0. Да, я проверил исходный код Android 2.3.7 и Android 4.0, по приблизительным оценкам, я думаю, я мог бы почти достичь конечной точки, если бы я мог стереть список mRecentTasks, который определен в ActivityMangerService.Java:

final ArrayList mRecentTasks = new ArrayList();

И еще одно, возможно, полезное определение:

static ActivityManagerService mSelf;
public static ActivityManagerService self() {
    return mSelf;
}

Потому что я'я не знаком с Javarefelction, мне нужна помощь о том, как очистить этот список, ниже приведен код моего:

    public static  void clearRecentTaskList(Launcher launcher){
    ActivityManager am = (ActivityManager) launcher.getSystemService(Context.ACTIVITY_SERVICE);
    Object systemRecentTask = new ArrayList();

    Object receiver = null;
    Field recentTaskList = null;
    Class service = null;
    Field self = null;        


    try {
        service = Class.forName("com.android.server.am.ActivityManagerService");
        Log.d(LOG_TAG, "clearRecentTaskList, service gotton"+service.getName());
    } catch (ClassNotFoundException e2) {
        Log.d(LOG_TAG, "clearRecentTaskList, class service not found");
    }

    try {
        self = service.getDeclaredField("mSelf");
    } catch (SecurityException e2) {
        Log.d(LOG_TAG, "clearRecentTaskList, SecurityException during get mSelf");

    } catch (NoSuchFieldException e2) {
        Log.d(LOG_TAG, "clearRecentTaskList, NoSuchFieldException during get mSelf");
    }
    Log.d(LOG_TAG, "clearRecentTaskList, self  gotton " + self.toGenericString());

    try {
        self.setAccessible(true);
        receiver = self.get(null);
    } catch (IllegalArgumentException e2) {
        Log.d(LOG_TAG, "clearRecentTaskList, IllegalArgumentException during use self to get the receiver");
    } catch (IllegalAccessException e2) {
        Log.d(LOG_TAG, "clearRecentTaskList, IllegalAccessException during use self to get the receiver");
    }

    if ( receiver != null){
        Log.d(LOG_TAG, "clearRecentTaskList, receiver is : "+receiver.toString());
    } else {
        Log.d(LOG_TAG, "clearRecentTaskList, receiver is NULL");
    }


    try {
        recentTaskList = service.getDeclaredField("mRecentTasks");
        recentTaskList.setAccessible(true);
        Log.d(LOG_TAG, "clearRecentTaskList, recentTaskList gotton"+recentTaskList.toGenericString());

        try {
            systemRecentTask = recentTaskList.get(receiver);
        } catch (IllegalArgumentException e1) {
            Log.d(LOG_TAG, "IllegalArgumentException during try to clearRecentTask");
        } catch (IllegalAccessException e1) {
            Log.d(LOG_TAG, "IllegalAccessException during try to clearRecentTask");
        }

        Log.d(LOG_TAG, "Try to print the size of recent task: "+((ArrayList) systemRecentTask).size());

    } catch (SecurityException e) {
        Log.d(LOG_TAG, "SecurityException during try to clearRecentTask");
    } catch (NoSuchFieldException e) {
        Log.d(LOG_TAG, "NoSuchFieldException during try to clearRecentTask");
    }   
}

С этой функцией я всегда встречаюсьИсключение нулевого указателя" потому что получатель нулевой, который получил сам. И я попробовал другой способ, как это (если я удаляю все try / catch):

self = service.getDeclaredMethod("mSelf", null);
receiver = self.invoke(null, null); // mSelf is a static method which in ActivityMangerService class

Тот же результат, я могуполучить экземпляр ActivityManagerService, и тогда я не смогуполучить mRecentTasks. Любые комментарии приветствуются, и хотя я нене знаю "как удалить все элементы в этом списке », но это могут быть другие вопросы.

Благодарю.

Ответы на вопрос(4)

Ваш ответ на вопрос