关于屏蔽HOME键和全屏

本文详细介绍了如何在Android应用中通过命令行启动并实现全屏显示,同时屏蔽HOME键和返回键的操作。通过设置Activity的启动方式、重写onBackPressed()、onAttachedToWindow(),以及利用缓冲Activity解决全屏与屏蔽HOME键冲突的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  今天接到一个需求,要求在我之前写的应用里增加命令行带参数形式的启动方式,在命令行启动的时候要求屏蔽掉HOME键和回退键,并且去掉 titlebar  和 status bar (说白了就是全屏),本来认为很简单的一个需求,却发现纠结了很久,所以今天特意在此整理下。

  一 首先命令行启动  : 很简单 

 1. 在要启动的Activity 中的 onCreate方法中 得到Intent, 然后用一个全局的 boolean 标识是否为 参数启动  代码大致如下

  XXXActivity{

     private boolean mLanchOut;

     onCreate(){

        Intent intent= getIntent();

       mLaunchOut = intent.getExtraBoolean("launchOut",false);  // launchOut 为外部传进来参数的key值

    }

}

2  启动一个命令窗口 adb shell 进去之后  然后  am start  -n com.***.***/com.***.***.XXX -ez launchOut true (注:com.***.***  表示你应用程序的包名 ,   com.***.***.XXX 表示你要启动的那个Activity的那个类的完整类名); 

这样的话 以后的要依据做是否为参数启动做相应的操作就根据 mLaunchOut的值来判断

 

二 然后是屏蔽到back 键   也很简单 

  在Activity类中重写 onBackPress()方法

 @Override
 public void onBackPressed() {
   .....  // 在这里写当按下back 键的时候你要做的操作 

   }

 

三  屏蔽 HOME键   这个是普通的按键事件捕捉不到的

要重写onAttchedToWindow() 然后在里面设定 设置 window的 type 类型为 KEYGUARD;

@Override

public  void onAttachedToWindow(){

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

 

四 设置全屏  这个具体就不细说了 两种方法 一种是代码中设定 ,一种是 Manifest.xml文件中配置  baidu 一搜到处都是

 

这时候 关键问题来了 当设置了屏蔽Home按键的时候 ,就全屏不了了  status bar(状态栏)就一直是存在的了,各种设置的方法 排列组合了一遍,发现还是不行,问题一直是存在,去baidu上搜了一把,发现碰到这种问题的人还不在少数,大家的解决方法要么就是不做HOME键 屏蔽了 要么就是 开一个线程啊 每隔一段时间就监听一下什么的, 这样 效率自然就会降低了 ,纠结ing!

  最终经历了无数次失败了之后找到解决方法了:

  用一个Activity 做缓冲 在这个缓冲Activity 中设置全屏 然后从这个缓冲Activity  跳转到 到目的Activity  中 在目的Acitivity 中设定 屏蔽HOME键 即上面归纳的第三步

  比如说 我们的目的Activity  叫他为TargetActivity   缓冲 Activity 叫 LoadActivity

 LoadActivity.java    我们在这个Activity的manifest .xml中配置 Theme 为 noTitleBar.FullScreen

class LoadActivity{

       onCreate(){

             Intent intent = new Intent();

             intent.setClass(this,TargetActivity.class);

             startActivity();

             this.finish();

      }

}

 

TargetActivity.java

class TargetActivity{

   onCreate(){

      。。。//设置全屏

  }

@Override

public  void onAttachedToWindow(){

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

        super.onAttachedToWindow();

 

}

 这样 我们要启动 TargetActivity的时候 就启动LoadActivity 这时候 全屏和屏蔽HOME键就同时做到了

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值