Android5.0以后隐式启动ServiceBug
时间:2022-04-24
本文章向大家介绍Android5.0以后隐式启动ServiceBug,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
以前写过一篇关于进程间通信的博客
通信之进程间通信-AIDL
当时用的还是4.2的系统,跨进程 的服务可以根据action进行启动
Intent intent = new Intent();
intent.setAction("android.intent.action.aidl.server");
但是现在用6.0时发现报错
01-06 01:54:14.140: : Process: com.fang.zrf.clientdemo, PID: 18507
01-06 01:54:14.140: : java.lang.IllegalArgumentException: Service Intent must be explicit:
Intent { act=android.intent.action.aidl.server }
01-06 01:54:14.140: : at android.app.ContextImpl.validateServiceIntent(ContextImpl.java:1209)
01-06 01:54:14.140: : at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1308)
01-06 01:54:14.140: : at android.app.ContextImpl.bindService(ContextImpl.java:1286)
01-06 01:54:14.140: : at android.content.ContextWrapper.bindService(ContextWrapper.java:604)
01-06 01:54:14.140: : at com.fang.zrf.clientdemo.MainActivity.onClick(MainActivity.java:70)
01-06 01:54:14.140: : at android.view.View.performClick(View.java:5205)
报错之处service的intent必须是明确的,显示的指出。这时候如果是在同一个应用中可以调用类名启动,那如果是不在同一个应用中之能通过service的路劲来调用了。
可以通过setComponent来调用
intent.setComponent(new ComponentName("com.fang.zrf.serverdemo", "com.fang.zrf.serverdemo.CustomService"));
也可以通过
intent.setClassName("com.fang.zrf.serverdemo", "com.fang.zrf.serverdemo.CustomService");
来调用,因为本质上是一样的setClassName源码也是创建了ComponentName对象
public Intent setClassName(String packageName, String className) {
mComponent = new ComponentName(packageName, className);
return this;
}
其实思路就是通过packagename 和classname来调用,方法有好多。
- 学习HTML5之表单
- 基于jQuery的ajax对WebApi和OData的封装我们还是先来看看要求在看看目标:思路封装方式
- js的动态加载、缓存、更新以及复用(四)
- ajax的再次封装!(改进版) —— new与不 new 有啥区别?
- ajax的再次封装!
- 【自然框架】js版的QuickPager分页控件 V2.0
- 你的SQL语句放在了哪里?
- oclhashcat:离线hash密码破解工具官方文档(中文版)
- 如何动态加载js?
- 【自然框架】数据访问之精雕细琢(一)存储过程的参数
- 100w条记录分页,可以有多快?—— DataReader分页与SQL语句分页的对比测试(在线演示)
- Mimikatz小实验:黄金票据+dcsync
- 【自然框架】n级下拉列表框的原理
- 【自然框架】分享 n级联动下拉列表框
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Qt音视频开发23-通用视频控件
- 破解Mariadb5.5密码
- redis学习(七)
- 自己实现一个SAP WebClient UI Repository Information System
- ABAP,Java和JavaScript类的构造函数使用的一些陷阱
- Spring Security如何优雅的增加OAuth2协议授权模式
- 如何将自定义XML视图注入SAP Fiori Elements应用
- SAP UI5控件ID的生成逻辑原理解析
- 如何自定义SAP Spartacus店铺的界面颜色风格
- 如何自定义SAP Spartacus店铺的购物车图表css风格
- 数据库PostrageSQL-从源代码安装
- Django的中间件
- WPF 使用 Skia 绘制 WriteableBitmap 图片
- dotnet 在 UOS 国产系统上使用 MonoDevelop 创建 GTK 全平台带界面应用
- dotnet 在 UOS 国产系统上安装 MonoDevelop 开发工具