Android Overriding home key

2019-01-03 18:35发布

As the question suggests I know we can't override the Home key event but if you look into the emulator of android 2.2 you will see an application Car Home it has overridden most of the keys like Home, end call.

Now, the point is how have they done it? I tried to peep into the source code of the app but to my surprise its not available or I am unable to find it, but I don't think later is the case.

3条回答
\"骚年 ilove
2楼-- · 2019-01-03 18:55

Looks like the following does it on 4.0:

In AndroidManifest.xml

<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>
查看更多
Fickle 薄情
3楼-- · 2019-01-03 19:15

It does not override the Home key, the Car Home application just behaves as a launcher, which any application can do. This behavior gets declared in the manifest file.

查看更多
乱世女痞
4楼-- · 2019-01-03 19:20

I agree with @Romain Guy

You can't override the behaviour of home button.

What the Car Home app does: it has defined itself as a launcher. You can also define yours as a launcher, and it will be notified when the home screen is about to be launched.

Check this out : Intent.html#CATEGORY_LAUNCHER

Please note that this doesn't mean that your app/activity is notified when the home button is pressed so that it can override the behaviour of it, but is notified when the system is about to launch the Home Screen. Both are different things. in this type of notification, Android already has sent the app (Which is currently executing) to the frozen state, and it won't have any control over what's happening.

This is as far as I know. I guess @Romain Guy may correct me if I am wrong at any place.

查看更多
登录 后发表回答