我们想知道,如果有办法阻止“长按”主页按钮功能,则会打开“appswitch / multitasking”对话框。
当我们尝试通过按住主页按钮打开三星Galaxy s3上的多任务处理时,我们的应用程序崩溃了
有没有办法解决这个bug?因此,在应用程序运行时,多任务处理对话框会打开吗?
或者,您能否提供一些禁用此“多任务处理功能”的代码?
答案 0 :(得分:0)
如果您没有创建自己的Android ROM,则无法阻止Home按钮甚至无法知道Home已被按下。这是出于安全原因在Android中完成的。
你能粘贴你的代码和logcat错误吗?
答案 1 :(得分:0)
有一种未知的方法可以实现这一目标:
创建服务并使其运行后台线程以捕获此事件。
ComponentName cm = am.getRunningTasks(1).get(0).topActivity;
String packageName = cm.getPackageName();
if (cm.getClassName().equals("com.android.systemui.recent.RecentsActivity"))
{
handler.post(new Runnable() {
@Override
public void run()
{
try
{
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);
context.startActivity(closeRecents);
}
catch (Throwable e)
{
e.printStackTrace();
}
}
});
}
基本上,这会在弹出的时候崩溃“最近的任务”。
答案 2 :(得分:0)
由于Android Lollipop ActivityManager#getRunningTasks()方法已被弃用,但仍然可以使用它来“阻止”多任务处理。 从其文档:“为了向后兼容,它仍将返回其数据的一小部分:至少是调用者自己的任务,可能还有一些其他任务,例如家庭,已知不敏感。”
因此您可以按如下方式使用调用者任务:
ComponentName cn = am.getRunningTasks(1).get(0).topActivity; //returns caller's own activity on Lollipop
if (cn != null && cn.getClassName().equals("com.example.MainActivity")) { //use fully qualified name of your running activity
Intent intent = new Intent(context, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //get activity keeping its stack
context.startActivity(intent);
}
}