为了账号安全,请及时绑定邮箱和手机立即绑定

我可以覆盖应用程序中的“主页”按钮吗?

我可以覆盖应用程序中的“主页”按钮吗?

烙印99 2019-09-02 20:36:35
我想在我的android上创建自己的“主页”屏幕,我想从我的应用程序中调用该主屏幕。如何覆盖“主页”按钮,以便在按下时应用程序将重定向到我的主屏幕而不是默认的主屏幕?是否可以覆盖主页按钮?
查看完整描述

3 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

覆盖以下方法。


@Override

public void onAttachedToWindow()

{  

    Log.i("TESTE", "onAttachedToWindow");

    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);

    super.onAttachedToWindow();  

}

使用此方法,HOME按钮在此活动中停止工作(仅此活动)。然后你重新实现,因为它是一个普通的按钮事件(例如后退按钮)。


public boolean onKeyDown(int keyCode, KeyEvent event) {

    if (keyCode == KeyEvent.KEYCODE_HOME) {

        Log.i("TESTE", "BOTAO HOME");

        return true;

    }

    return super.onKeyDown(keyCode, event);    

}


查看完整回答
反对 回复 2019-09-02
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

在 AndroidManifest.xml


<activity

    ...

    android:launchMode="singleTask">

    <intent-filter>

        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />

        <category android:name="android.intent.category.HOME" />

        <category android:name="android.intent.category.DEFAULT" />

        ....

    </intent-filter>

</activity>

您需要launchMode="singleTask"将意图传递给已在运行的应用程序,而不是创建新实例。


在活动中:


   @Override

    protected void onNewIntent(Intent intent) {

        super.onNewIntent(intent);

        if (Intent.ACTION_MAIN.equals(intent.getAction())) {

            Log.i("MyLauncher", "onNewIntent: HOME Key");


        }

    }

你没有得到关键事件


查看完整回答
反对 回复 2019-09-02
  • 3 回答
  • 0 关注
  • 351 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信