安卓系统级返回键和HOME键

来源:互联网 发布:淘宝客恶意骗佣金 编辑:程序博客网 时间:2024/09/21 09:26

           最近的一个项目需要写一个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),如果各位在开发时遇到什么可以问我,大家一起分享交流!

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 打疫苗的本子丢了怎么办 麦客收割机麦秸里加麦粒怎么办 高铁乘务员身高不够怎么办 坐火车买到站票怎么办 买上车补票原票怎么办? 买的商务座补票怎么办 12306账号被别人登录怎么办 飞机不提供餐食怎么办 12306退票支付宝失败怎么办 12306重复支付怎么办支付宝 支付宝登的12306账号怎么办 没买儿童高铁票怎么办 网上订的机票怎么办托运 半夜买高铁票不出票怎么办 轻轨少买了一站怎么办 高铁火车票丢了怎么办 如果高铁票丢了怎么办 高铁票丢了怎么办 报销 高铁如果没赶上怎么办 高铁管家待核验怎么办 动车没有票了怎么办 12306取消订单3次怎么办 【12306取消订单3次怎么办】 火车票取消订单3次怎么办 12306收不到验证码怎么办 安逸花验证码次数限制怎么办 航班晚点导致错过转机怎么办 想去沈阳站送站怎么办 高铁没有赶上车怎么办 火车晚点赶不上下一趟车怎么办 列车晚点影响下一趟车怎么办? 高铁晚点赶不上下班车怎么办 火车在半路坏了怎么办 做火车中途坏了怎么办 员工怀孕不上班保险怎么办 怀孕带孩子不能上班保险怎么办 怀孕了不想上班保险怎么办 高铁票没票了怎么办 购买动车票无座怎么办 个税工资多报怎么办 火车晚点耽误了转车怎么办