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来调用,方法有好多。
- WCF技术剖析之十二:数据契约(Data Contract)和数据契约序列化器(DataContractSerializer)
- silverlight向服务器post数据类
- WCF技术剖析之十三:序列化过程中的已知类型(Known Type)
- 44 Amazing Silverlight 2.0 Screencasts
- CaseStudy(showcase)类库篇-用agTweener来实现动画效果
- CaseStudy(showcase)数据篇-Loading的制作
- CaseStudy(showcase)数据篇-加载图片
- CaseStudy(showcase)数据篇-从XML中获取数据
- CaseStudy(showcase)布局篇-全屏效果
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(12)-系统日志和异常的处理②
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(14)-EasyUI缺陷修复与扩展
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(10)-系统菜单栏[附源码]
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(8)-MVC与EasyUI DataGrid 分页
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(5)-EF增删改查
- 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 文档注释
- 微信会被封?!包子 Leetcode 1512 solution Number of Good Pairs
- VUE是什么?
- 爬虫如何抓取网页的动态加载数据-ajax加载
- Python 为什么用 # 号作注释符?
- 基于矩阵分解原理的推荐系统
- Python实现信息自动配对爬虫排版程序
- EOF是不是字符
- Alibaba开源Java诊断工具Arthas简单介绍
- 气象编程 | Google Earth Engine for R——提供250+ 实例
- Anaconda安装和使用
- Redhat7安装docker
- 有个笔记本就可以玩一玩Hadoop
- java如何将String转换为Int
- java中如何将数组转换为List
- 从一个多层嵌套循环中直接跳出