android - 如何禁用最近的任务/应用程序按钮

标签 android

我正在为 Android 构建一个 child 游戏应用程序。我需要在使用时禁用所有键。 我已将应用程序设置为主页应用程序并禁用后退键(负责主页和后退按钮)。 为了清除最近的任务列表,我创建了一个虚拟 Activity 列表,这些 Activity 在应用程序启动时开始并结束。虚拟 Activites 看起来像:

public class Dummy1 extends Activity
{
  public void onCreate(Bundle paramBundle)
  {
    super.onCreate(paramBundle);
   finish();
}
}

然后在我执行的应用程序的 onCreate 中:

this.pm.setComponentEnabledSetting(new ComponentName(this, Dummy1.class),   PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

Intent localIntent1 = new Intent(this, Dummy1.class);
localIntent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(localIntent1); 

当有人试图按住 Home 键来显示最近的任务时,这会解决问题,因为我创建了其中的 8 个,但它们都是空的,因此用户无法单击以更改应用程序。

现在我似乎无法禁用的唯一按钮是“最近的任务/应用程序”按钮(主要在 HTC 设备上可用,即 One X、One S 等)。这个按钮似乎仍然会显示所有最近的任务(即使我的虚拟任务已创建)而且我似乎找不到按下此按钮时触发的事件的“ Hook ”?

注意:我知道它是可行的,因为像 ToddlerLock 这样的应用已经做到了......我只是想不通。

最佳答案

这将关闭 RecentActivity 对话框。把它放在你的 Activity 课上。

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);

        if (!hasFocus) {
            windowCloseHandler.postDelayed(windowCloserRunnable, 250);
        }
    }

    private void toggleRecents() {
        Intent closeRecents = new Intent("com.android.systemui.recent.action.TOGGLE_RECENTS");
        closeRecents.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
        ComponentName recents = new ComponentName("com.android.systemui", "com.android.systemui.recent.RecentsActivity");
        closeRecents.setComponent(recents);
        this.startActivity(closeRecents);
    }

    private Handler windowCloseHandler = new Handler();
    private Runnable windowCloserRunnable = new Runnable() {
        @Override
        public void run() {
            ActivityManager am = (ActivityManager)getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
            ComponentName cn = am.getRunningTasks(1).get(0).topActivity;

            if (cn != null && cn.getClassName().equals("com.android.systemui.recent.RecentsActivity")) {
                toggleRecents();
            }
        }
    }

您需要在您的 list 中添加以下权限。

    <uses-permission android:name="android.permission.GET_TASKS" />

关于android - 如何禁用最近的任务/应用程序按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14574239/

相关文章:

java - 如何使用 Apache Shiro 对 Android 应用程序进行身份验证和授权

java - Android webview 不显示图像

android - 如何从 android 库 Activity 中的主应用程序扩展类?

android - 在sqlite中插入时获取主键而不是rowID或通过其rowID获取主键

android - SQLite 创建双列 _id

android - 如何在android中的按钮上设置工具提示?

android - 如何为 float 操作按钮内的图标设置动画

Android put 和 get parcelable array 报错

java - 如何在 Firebase 中动态获取 key ?

java - TextInputLayout : EditText added is not a TextInputEditText. 请改用该类