通过将我的应用设为主屏幕应用来禁用“主页”按钮

时间:2018-11-09 11:02:14

标签: android

我正在尝试开发一个锁定应用程序,我禁用了主页按钮单击,但仅在硬单击该按钮的电话中禁用了按钮,但是在没有硬主页按钮的最新版本中,没有禁用主页按钮。因此,在搜索之后,我发现处理此问题的唯一方法是使我的应用像HomeScreen一样,将其添加到清单中:

    <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版本中处理主页按钮的唯一方法吗?通过将我的应用程序设为HomeScreen应用程序?

2-只有在打开我的应用程序之后,还有其他方法可以禁用主页按钮吗?

3-如何成功打开锁后,如何以编程方式切换到TouchWiz默认主屏幕并将我的应用程序删除为主屏幕?

谢谢

1 个答案:

答案 0 :(得分:0)

尝试删除其他活动并按以下方式进行:

import json

def fixkey(key):
    # toy implementation
    #print("fixing {}".format(key))
    return key.replace("&", "").replace("$", "")

def normalize(data):
    #print("normalizing {}".format(data))
    if isinstance(data, dict):
        data = {fixkey(key): normalize(value) for key, value in data.items()}
    elif isinstance(data, list):
        data = [normalize(item) for item in data]
    return data

jsdata = """
{
    "highest_table": {
        "items": [{
                "key": "Human 1",
                "columns": {
                    "Na$me": "Tom",
                    "Description(ms/2)": "Table Number One on the Top",
                    "A&ge": "24",
                    "Ge_nder": "M"
                }
            },
            {
                "key": "Human 2",
                "columns": {
                    "Na$me": "John",
                    "Description(ms/2)": "Table Number One on the Top",
                    "A&ge": "23",
                    "Ge_nder": "M"
                }
                }
        ]
    }
}
"""


data = json.loads(jsdata)

data = normalize(data)

result = json.dumps(data, indent=2)
print(result)

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

编辑

如果您想在按下主屏幕按钮后返回到默认启动器,则可以覆盖以下方法:

    <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.LAUNCHER" />
        </intent-filter>
            <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>