【问题标题】:restart my app activity on home button pressed在按下主页按钮时重新启动我的应用程序活动
【发布时间】:2016-05-02 20:55:46
【问题描述】:

我想禁用所有 3 个按钮后退按钮任务和主页按钮仅适用于 1 个活动,我找到了返回和任务按钮工作的方法。

但是我面临禁用主页按钮的问题..如果禁用有点复杂,只需在用户按下主页按钮时重新启动我的应用程序活动,也对我有用!

任何建议或帮助我该怎么做?

以下是我的代码

@Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (keyCode==KeyEvent.KEYCODE_HOME)
        {

            return false;
        }
        else if (keyCode==KeyEvent.KEYCODE_BACK)
        {

        }
        if (keyCode==KeyEvent.KEYCODE_TAB)
        {

        }

        else {
            return super.onKeyUp(keyCode, event);
        }
        return  false;
    }

【问题讨论】:

  • 您为什么要这样做?主页按钮和最近的按钮应该带你回家并显示最近的选择器。为什么要干涉所有用户的预期行为?
  • 我正在尝试制作屏幕锁定,当移动设备完成 root 并且用户必须输入密码时打开它......没有其他选项可以关闭该活动

标签: android


【解决方案1】:

如果有人在下面寻找答案可能会有所帮助, 只需在清单活动标签中添加这一行

 android:launchMode="singleTop"

<activity
        android:name=".Ui.MainActivity"
        android:label="@string/app_name"
        android:launchMode="singleTop"
        android:theme="@style/AppTheme.NoActionBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

【讨论】:

    【解决方案2】:

    很遗憾,新版本的 Android 阻止我们覆盖 Home 按钮...抱歉!

    但是,您可以在按下按钮时执行某些操作。您需要覆盖 onPause()

    编辑:我试过了,它奏效了(尽管它真的很丑......):

    @Override
    public void onPause() {
        super.onPause();
    
        Log.d(TAG, "Pause");
        Intent i = new Intent(MainActivity.this, MainActivity.class);
        startActivity(i);
    }
    

    【讨论】:

    • 它不工作 :( protected void onPause() { super.onPause(); startActivity(new Intent(this,FirstActivity.class)); }
    【解决方案3】:

    您可以尝试在清单中的活动中使用此行。

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

    使用这个,当用户按下主页按钮时,系统会询问你是要打开一次还是总是,选择总是,当用户按下主页按钮时,将打开声明为主页的活动

    Why is category HOME required?

    【讨论】:

      【解决方案4】:

      我认为您需要覆盖 onKeyDown

      @Override
      public boolean onKeyDown(int keyCode, KeyEvent event) {
          if ((keyCode == KeyEvent.KEYCODE_HOME)) {
              //stuff here!                 
              return true;
          }
          return super.onKeyDown(keyCode, event);
      }
      

      【讨论】:

        猜你喜欢
        • 2017-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多