我有一个使用CATEGORY_HOME的应用程序,这样当你按下主页按钮时,它会让你进入我的应用程序。用户选择我的应用程序作为默认主页后,将为整个设备设置。
当我按下主页按钮时,当你不在我的应用程序中时,我想知道如何禁用我的应用程序内的主页。在做了一些研究后,我想我需要使用包管理器,但我不知道如何实现它。
活动在Manifest中定义为home:
<activity
android:name=".home"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
以下是我如何去家里以及如何设置它:
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
答案 0 :(得分:2)
为什么要在清单中配置类别HOME?您可以通过覆盖来覆盖主页按下行为:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_HOME)) {
Toast.makeText(this, "Home button pressed!", Toast.LENGTH_LONG).show();
return true;
}
return super.onKeyDown(keyCode, event);
}
然后在按下应用程序内的按钮时,只需执行您正在执行的任何操作。在应用程序之外,它当然会正常工作。
修改强>
刚检查过,在我的设备上无效,但似乎如果覆盖onAttachedWindow()
并禁用HOME,它可能会起作用。只需记住使用onKeyDown()
重新分配密钥(就像在此编辑上方发布的那样)。
@Override
public void onAttachedToWindow() {
getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}