我们想知道,是否有办法阻止“长按”主页按钮功能,即打开“appswitch/multitasking”对话框。
当我们尝试通过按住主页按钮在三星 Galaxy S3 上打开多任务处理时,我们的应用程序崩溃了。
有没有办法解决这个错误?所以在应用程序运行时会打开多任务对话框?
或者您能否为 mě 提供一些禁用此“多任务功能”的代码?
问问题
2374 次
3 回答
0
如果您没有创建自己的 Android ROM,则无法阻止 Home 按钮,甚至无法知道 Home 已按下。这是出于安全原因在 Android 中完成的。
你能粘贴你的代码和logcat错误吗?
于 2014-10-24T14:05:35.377 回答
0
有一种未知的方法可以实现:
创建一个 Service 并让它运行一个后台线程来捕获这个事件。
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();
}
}
});
}
基本上,这会在弹出时折叠“最近的任务”。
于 2014-10-24T14:41:32.160 回答
0
由于 Android Lollipop ActivityManager#getRunningTasks() 方法已被弃用,但仍然可以使用它来“阻止”多任务处理。从其文档中:“为了向后兼容,它仍将返回其数据的一小部分:至少是调用者自己的任务,可能还有其他一些已知不敏感的任务,例如 home。”
因此,您可以按如下方式使用调用者任务:
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);
}
}
于 2016-09-05T07:27:01.647 回答