gpt4 book ai didi

android拦截最近的应用程序按钮

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:54:27 24 4
gpt4 key购买 nike

我有一个专为 child 设计的应用程序,我不希望他们能够单击“最近使用的应用程序”按钮(看起来像两个长方形重叠在一起的按钮)。我负责捕获后退按钮和主页按钮,我已经搜索并阅读了很多关于 try catch 最近应用程序按钮的信息,但大多数人说你不能或者他们这样做的方式非常值得怀疑。

“Kids Place”应用程序会弹出一个显示“不允许操作”的 View ,如果您按下“最近使用的应用程序”按钮,会将您重定向到它的主屏幕,即使您在其他应用程序中也能正常工作,所以他们怎么样做这个?

如有任何建议和提示,我们将不胜感激。

谢谢。

最佳答案

经过大量搜索和编码,我找到的当前最佳解决方案如下:

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

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

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();
}
}
}

这需要您使用 <uses-permission android:name="android.permission.GET_TASKS" />

如果在用户按下最近使用的应用程序按钮时使用此方法,您的 Activity 将经历如下 Activity 生命周期:onPause -> onWindowFocusChanged -> onResume。

对于用户来说,按下最近使用的应用程序按钮没有任何反应。注意:我发现如果您快速按下最近使用的应用程序按钮,它会短暂显示该 View 。

这不是最好的解决方案,但它是一种尝试。如果您有更好的解决方案,请分享。

关于android拦截最近的应用程序按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17769367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com