当前位置: 首页 > wzjs >正文

建设银行培训网站网站开发为什么要用框架

建设银行培训网站,网站开发为什么要用框架,公司搜索seo,漯河城乡建设管理局网站在Android 9.0系统中,若需要通过修改系统源码实现开机启动特定应用(如系统预装应用或第三方应用),通常涉及对系统框架层(Framework)的深度定制开发。以下是详细的实现步骤和关键代码位置整理: 1…

在Android 9.0系统中,若需要通过修改系统源码实现开机启动特定应用(如系统预装应用或第三方应用),通常涉及对系统框架层(Framework)的深度定制开发。以下是详细的实现步骤和关键代码位置整理:


1. 监听开机完成广播并启动目标应用

Android系统在开机完成后会发送BOOT_COMPLETED广播,可以通过监听该广播触发应用启动逻辑。

关键修改位置
  • 文件路径:framework/base/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
实现步骤
  1. KeyguardUpdateMonitor类中注册广播接收器,监听ACTION_BOOT_COMPLETED广播。
  2. 收到广播后调用启动目标应用的方法。
示例代码
@VisibleForTesting
protected final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {// 调用启动应用的方法startTargetApp(context, "com.example.targetapp");}}
};private void startTargetApp(Context context, String packageName) {Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);if (intent != null) {intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(intent);}
}

2. 修改默认启动项(Launcher)

如果需要将某个应用设为默认启动项(例如替换系统的Launcher),可以修改ActivityManagerService以强制指定默认Launcher。

关键修改位置
  • 文件路径:frameworks/base/services/java/com/android/server/am/ActivityManagerService.java
实现步骤
  1. ActivityManagerService中添加setDefaultLauncher()方法。
  2. 指定目标应用的包名和类名,并设置为默认Launcher。
示例代码
private void setDefaultLauncher() {String packageName = "com.example.customlauncher";String className = "com.example.customlauncher.MainActivity";ComponentName launcher = new ComponentName(packageName, className);// 清除原有默认设置mContext.getPackageManager().clearPackagePreferredActivities();// 设置新的默认LaunchermContext.getPackageManager().addPreferredActivity(filter, MatchFilter, components, launcher);
}

3. 系统权限与白名单配置

为了确保目标应用能够顺利启动,需正确声明权限并绕过系统限制。

权限声明

AndroidManifest.xml中添加以下内容:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<receiver android:name=".BootReceiver"><intent-filter><action android:name="android.intent.action.BOOT_COMPLETED" /></intent-filter>
</receiver>
绕过权限限制

在系统源码中,可能需要修改AppOpsManager以允许特定应用的开机自启动权限:

AppOpsManager mAppOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
mAppOpsManager.setMode(AppOpsManager.OP_SYSTEM_ALERT_WINDOW, uid, packageName, AppOpsManager.MODE_ALLOWED);

4. 适配Android 9.0的限制

后台限制
  • Android 9.0对后台启动Activity有严格限制,确保目标应用具有前台服务或系统签名权限。
隐式广播限制
  • BOOT_COMPLETED广播仍为显式广播,但需确保接收器在Manifest中正确注册。

总结步骤

  1. 监听开机广播

    • KeyguardUpdateMonitor或自定义系统服务中添加广播接收逻辑。
  2. 启动目标应用

    • 使用PackageManagerIntent启动指定包名的应用。
  3. 设置默认Launcher(可选)

    • 修改ActivityManagerService以强制指定默认启动项。
  4. 配置系统权限

    • Manifest和系统源码中声明权限并绕过限制。
http://www.dtcms.com/wzjs/545137.html

相关文章:

  • 龙泉市建设局网站杭州网站建设公司服务
  • 网题 做问卷的网站创建5a 网站建设要求
  • 优秀网站建设评选活动海报手机端网页制作公司
  • 王者荣耀网站建设的步骤中山网站建设网站
  • 电子商务网站建设的步骤怎么在阿里云建网站
  • 在那个网站做定制旅游中信建设有限责任公司深圳中信金融中心项目工期专业招标
  • 网站架设流程php网站攻击
  • 汉中市网站建设公司红酒购物网站源码
  • 视频网站调用怎么发布视频号
  • 怎样做28网站代理中文网址价格
  • 京东商城官方网站网页制作与设计用什么软件
  • 青岛做门户网站的做网站有必要注册商标吗
  • 龙岩在线网seo推广的优缺点
  • 好网站你知道的重庆森林为什么叫这个名字
  • 网站如何做外部链接网站开发工作安排
  • 做电影网站投资多少佛山微网站价格
  • 免费博客网站有哪些河南网站建设公司哪家好
  • dede 门户网站app登录wordpress
  • 在线考试网站开发中国影楼免费模板网
  • 网站底部浮动电话广告wordpress如何增加page样式
  • 乌镇网站建设标书如何建立一个网站视频教学
  • 宁波专业网站建设怎么做郑州网站建设求职简历
  • 家用电脑搭建网站北京轨道交通建设管理有限公司网站
  • 创建一个网站网站空间费用网站可以做库存吗
  • 瑞安网站制作做jsp网站时怎么预览
  • 什么是企业云网站建设视觉设计师和平面设计师的区别
  • 最权威的公文写作网站网上买手表哪个网站可以买到正品
  • h5网站开发流程网站添加在线留言
  • 东莞广告公司东莞网站建设网站备案中更名
  • wordpress站内信插件开发一个交易网站多少钱