Android 通过使我的应用程序成为主屏幕应用程序来禁用主页按钮

Android 通过使我的应用程序成为主屏幕应用程序来禁用主页按钮,android,Android,我正在尝试开发一个锁定应用程序,我禁用了home(主页)按钮单击,但仅在手机中该按钮被硬单击,但在没有硬主页按钮的最新版本中,home(主页)按钮未被禁用。所以在搜索之后,我发现处理这个问题的唯一方法是让我的应用程序像主屏幕一样,我把这个添加到我的清单中: <activity android:name=".HomeActivity" android:label="@string/app_name"> <intent-fil

我正在尝试开发一个锁定应用程序,我禁用了home(主页)按钮单击,但仅在手机中该按钮被硬单击,但在没有硬主页按钮的最新版本中,home(主页)按钮未被禁用。所以在搜索之后,我发现处理这个问题的唯一方法是让我的应用程序像主屏幕一样,我把这个添加到我的清单中:

    <activity
        android:name=".HomeActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".MainActivity"
            android:clearTaskOnLaunch="true"
            android:excludeFromRecents="true"
            android:launchMode="singleTask"
            android:screenOrientation="portrait"
            android:stateNotNeeded="true" >
            <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>

当运行此应用程序时,它显示我可以在我的应用程序和android屏幕之间进行选择,当我选择我的应用程序时,每次单击“主页”按钮都会打开我的应用程序

我的问题是:

1-这是在所有android版本中处理home按钮的唯一方法吗?让我的应用程序成为主屏幕应用程序

2-只有当我的应用程序打开时,是否有其他方法禁用主页按钮

3-当锁成功打开时,我如何通过编程切换到TouchWiz默认主屏幕并将我的应用程序作为主屏幕删除


谢谢

尝试删除其他活动,然后按以下方式继续:


每次有人点击主页按钮时,它将打开您的活动,这是一个主屏幕,而这一次它将不必首先打开主页活动

编辑

如果您想在按下home(主页)按钮后返回默认启动器,可以覆盖以下方法:


@凌驾
公共布尔onKeyDown(int-keyCode,KeyEvent事件){
if(keyCode==KeyEvent.keyCode\u HOME)
{
意向=无效;
最终PackageManager PackageManager=getPackageManager();
对于(最终解决方案信息解决方案信息:packageManager.QueryInputActivities(新意图(意图.操作\主)、添加类别(意图.类别\主)、packageManager.MATCH\默认值))
{
if(!getPackageName().equals(resolveInfo.activityInfo.packageName))//如果此活动不在我们的活动中(换句话说,它是另一个默认主屏幕)
{
intent=packageManager.getLaunchIntentForPackage(resolveInfo.activityInfo.packageName));
星触觉(意向);
打破
}
}
}
if(keyCode==KeyEvent.keyCode\u BACK)
{
完成();
}
返回false;

}
在应用程序启动时,您还有其他活动要启动吗?是的,我有,但问题是每次单击“主页”按钮时,它都会打开应用程序,而且无法从手机上卸载它!是的,但我的应用程序只是一个手机锁定应用程序,这意味着当用户成功输入代码时,我希望默认的主屏幕是正常的:TouchWiz而不是我的应用程序!有什么方法可以通过编程来实现吗?这正是我所需要的!启动默认启动器或打开主屏幕选择器的代码是什么?我已经更新了答案,请检查。如果它有效,请返回并提及它对未来读者的帮助。应用程序崩溃!它向我显示了这个异常:java.lang.IllegalArgumentException:添加窗口后无法更改窗口类型。并且此行没有编译类型\u KEYGUARD this.getWindow().setType(WindowManager.LayoutParams.type\u KEYGUARD);我将其更改为:键入\u KEYGUARD\u对话框(唯一可用)