碰到个需求,要用物理按键来启动APK。原理就是底层提供一个键值到framework层,framework层直接调用键值通过包名来启动APK,假设底层提供的键值是F3

+++ b/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -6489,9 +6524,29 @@ public class PhoneWindowManager implements WindowManagerPolicy {+            case KeyEvent.KEYCODE_F3:{+                               if(down)
+                               {+                                       ActivityManager manager = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);
+                                       ActivityManager.RunningTaskInfo info = manager.getRunningTasks(1).get(0);
+                                       String packageName = info.topActivity.getPackageName();
+                                       if(packageName!=null&&!packageName.equals("com.wzict.tacticalsystem")){+                                               Intent mintent = new Intent();
+                                               ComponentName componentName = new ComponentName("com.wzict.tacticalsystem","com.wzict.tacticalsystem.activity.FirstActivity");
+                                               mintent.setComponent(componentName);
+                                               mintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                                               mContext.startActivity(mintent);
+                                       }
+                               }
+                               break;
+                       }

再添加一个需求,按下按键和抬起按键的时候都发送一个广播

+++ b/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -6489,9 +6524,29 @@ public class PhoneWindowManager implements WindowManagerPolicy {+            case KeyEvent.KEYCODE_F3:{+                               if(down)
+                               {+                                       ActivityManager manager = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);
+                                       ActivityManager.RunningTaskInfo info = manager.getRunningTasks(1).get(0);
+                                       String packageName = info.topActivity.getPackageName();
+                                       if(packageName!=null&&!packageName.equals("com.wzict.tacticalsystem")){+                                               Intent mintent = new Intent();
+                                               ComponentName componentName = new ComponentName("com.wzict.tacticalsystem","com.wzict.tacticalsystem.activity.FirstActivity");
+                                               mintent.setComponent(componentName);
+                                               mintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                                               mContext.startActivity(mintent);
+
+ Intent mintent = new Intent("android.intent.action.F3.down");
+ mContext.sendBroadcastAsUser(mintent,UserMandle.ALL);
+ }
+ else {
+      Intent mintent = new Intent("android.intent.action.F3.uo");
+      mContext.sendBroadcastAsUser(mintent,UserMandle.ALL);
+}
+                               }
+                               break;
+                       }

mt8788 android 9.0 通过按键来打开APK相关推荐

  1. android app没有读写权限设置,Android 6.0以上权限拒绝打开权限设置界面的解决方法...

    本人使用小米手机,打开qq或者微信的时候,某个权限拒绝的话,会提示你开启,点击开启会跳转到app的权限设置界面,当然了,这是国内系统深层定制的原因,也就是说这个界面原声的android没有的!这里以小 ...

  2. Android 10.0 PackageManagerService(三)APK扫描-[Android取经之路]

    摘要:上一节讲解了PKMS的 权限扫描,扫描/system/etc/permissions中的xml,存入相应的结构体中,供之后权限管理使用. 这一节主要来讲讲APK的扫描. 阅读本文大约需要花费15 ...

  3. Android 4.0.4系统下实现apk的静默安装和启动

    转自http://www.linuxidc.com/Linux/2013-02/79403.htm 未亲测 最近在Android 4.0.4系统下实现apk的静默安装和启动的功能,这里和大家分享一下, ...

  4. android mtk 按键,Android 4.0 虚拟按键、手机模式、平板模式(转)

    nullem;text-align:left">平台信息: 内核:linux2.6/linux3.0 系统:android/android4.0 平台:S5PV310(samsungE ...

  5. android调用另一app的xml,Android 7.0+调用其他App打开文件

    ​ 近期需要用到读取Android设备外存中的JSON和Word,在前期开发时用于调试的是Android 6.0的米4,当拿到实际应用环境(Android 7.0)时,Android 6.0之后的版本 ...

  6. Android 7.0 虚拟按键(NavigationBar)源码分析 之 点击事件的实现流程

    第二部分: Let's go!!! [点击事件的实现流程] 1.初始化 虚拟按键点击效果的实现和实体按键相似,也是通过上报一个keyCode值,来判断哪个按钮被点击.不同的是,实体按键的keyCode ...

  7. MT8788 android 9.0 gsensor导致预览与拍出来的照片方向不一致

    在项目中,组装好的样机(主板竖着放)与未组装的主板(水平放置)烧写的同一套代码,经测试发现,组装好的样机(主板竖着放)相机预览与照片方向不一致,未组装的主板(水平放置)相机预览与照片方向是正常的.后来 ...

  8. android 安装 apk 7.0,android 7.0及以上版本安装apk

    第一:在AndroidManifest.xml文件下 android:name="android.support.v4.content.FileProvider" android: ...

  9. Android 4.0按键事件以及系统流程分析

    Android 4.0中按键的处理流程 按键在Android系统中,有着不同的代表意义.以前的全键盘的手机代码没有阅读过,所以也不是很了解.本人介绍的是在触摸屏的手机上的按键消息的处理流程. 在现在触 ...

最新文章

  1. 设计模式之访问者(visitor)模式
  2. Spring boot定制错误页面
  3. 类与接口(四)方法重载解析
  4. 启动物料帐后不可更改物料价格的处理方法
  5. N!-201308071627.txt
  6. 【牛客 - 318G】LLLYYY的数字思维 与【牛客 - 289J】这是一个沙雕题II(贪心构造)
  7. pytorch图像和张量的相互转换_Day107:Pytorch张量类型的构建与相互转换
  8. 增强服务器安全性能,加强Linux服务器安全的20项建议
  9. Vue项目构建后通过Nginx/SpringBoot/Express/Egg发布
  10. MyBatis-Plus自动填充功能填坑
  11. python 后台系统 源码_这是我见过最好的博客系统!附源码(前端、后台、APP、小程序都有)...
  12. 老李分享:持续集成学好jenkins之解答疑问
  13. jquery的历史版本
  14. jsp中文乱码现象解决办法
  15. 使用BabeLua在VS中创建Lua项目。
  16. Java封装、继承、多态、super杂糅在一起的小练习,公司雇员员工工资问题(Employee),练习扩展:创建一个Employee数组,分别创建不同的Employee对象,并打印某个月的工资
  17. Mac电脑如何设置屏幕保护程序的颜色?
  18. cobra是什么鬼?
  19. 【Vue】直播流m3u8,rtsp,rtmp,flv,mp4测试地址
  20. 驱动开发思路以及应用程序与驱动程序的区别

热门文章

  1. 艾伟_转载:如何开发绚丽、高效率的界面(Windows嵌入式系统)
  2. oracle00312,Oracle教程:ORA-16038 ORA-19809 ORA-00312 错误解决
  3. rancher2.x证书过期
  4. dc元数据和html描述资源,在HTML中使用DC元数据
  5. 操作系统对线程的调度问题;CFS
  6. Android简单美观计算器(界面部分)
  7. 基于FPGA的交通信号灯设计
  8. 编译工程——词法分析
  9. 「近世代數概論」(Garrett Birkhoff,Saunders Mac Lane) 3.1.1 習題1
  10. java dispo lock_Java Row.getAs方法代码示例