安卓系统级返回键和HOME键

本文分享了一种在最新Android版本上实现自定义返回键和HOME键的方法,适用于开发Launcher应用。作者提供了在华为、小米和魅族等设备上测试通过的代码示例。

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

           最近的一个项目需要写一个Launcher,所以需要用到自定义的back键和home键,之前在网上查找了很多资料,但是很多都很老了,在新的安卓版本上不能使用,所以这次特别把自己的处理方法发出来,我在最新的华为和小米,魅族上测试时可以使用的,一来方便以后使用的时候查找,另外也方便大家。老规矩,还是上代码先:

       Home键:

       Intent intent =new Intent(Intent.ACTION_MAIN);

       intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

   intent.addCategory(Intent.CATEGORY_HOME);
   startActivity(intent);
   这里一定要加Intent.FLAG_ACTIVITY_NEW_TASK,如果没有加的话在4.4版本会没有效果,在5.1版本
会报错,在6.0版本也没有效果,当时我也是测试了很多版本才解决这个问题的。 
    Back键:
    Back键要相对麻烦一些,我这里有两种方法来调用系统级别的back键功能,一种是调用系统辅助功能的
方式,另外一种是直接通过反射的原理来调用android的底层接口。这两种方法都各有优劣。
    第一种方法不好的地方是在调用前需要手动设置一次权限,有点像微信红包功能一样,需要调用
AccessibilityService的服务,大家还是先看看我的代码吧:  
  1.先写了一个服务类:                                                                                
  2.在要使用back键的控件上使用如下方法:
   
 back_selector.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {//back键
       BackKeyService.backKeyService.performGlobalAction(AccessibilityService.GLOBAL_ACTION_BACK);}}
           
就这一句话是不是很简单,但是实际在用的时候会有些不方便,大家有时间体验一下就知道了,所以我就采用
第二种方法。

   第二种方法:使用反射的机制来调用Android底层,如果对反射不太了解的同学可以自己度娘一下,当时我也是
重新去复习了一下,因为自己也很久没有用了。。。。
   
back_selector.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {//back键
       Runtime runtime = Runtime.getRuntime();
                    try {
                        runtime.exec("input keyevent " + KeyEvent.KEYCODE_BACK);
                    } catch (IOException e) { // TODO Auto-generated catch block
                        e.printStackTrace();
                    }}}
           

     这种方法可以在4.2以下的机型直接使用,但是在这版本以上的就不可以了,要解决这个问题,必须
使用signApk工具,对platform.pk8和platform.x509.pem重新签名,签名的方法很简单:
     1.把项目的apk放在signApk的包内。
     2.然后运行cmd,并定位到singApk这个包的位置,我的文件位置如下图:
    
     3.在后面输入java -jar SignApk.jar platform.x509.pem platform.pk8 launcher-debug.apk sign_app.apk
     4.如果成功就会在包内生成一个名叫sign_app.apk,然后将它安装在你的安卓设备,你的back键
就可以正常使用了哦
     5.下面的附件就是所需要的signApk包
   以上方法我已经在安卓常用的机型和软件版本测试过是可以正常使用的(机型覆盖主流机型的85%,版本
从4.2到6.0),如果各位在开发时遇到什么可以问我,大家一起分享交流!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值