android service隐式启动的问题

在测试AIDL时,客户端隐式启动服务端Service发现程序崩溃,logCat关键语句为
08-03 19:25:14.708: E/AndroidRuntime(20603): java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.example.ipcdemo.aidl.bookservice }
act表示Intent中指定的action。这个异常说的是Service必须显示启动。但是远程客户端又访问不到服务端的Service类。
查了资料后发现,从5.0开始,Service的启动方式发生了变化,显式启动同前,隐式启动略有变化,就是要指定Service所在的程序包名。具体可见下面这篇博客,讲得十分详细:

http://blog.csdn.net/l2show/article/details/47421961

其实在startService函数的注释中也有体现:

service Identifies the service to be started. The Intent must be either fully explicit (supplying a component name) or specify a specific package name it is targetted to.

大意是要么完全显示启动(提供组件名),要么指定具体的包名.
所以解决隐式启动的问题,可用Intent.setPackage()指定包名。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值