作者winsummer (winsummer)
看板AndroidDev
标题[问题] AIDL永远不会connect
时间Fri Jul 21 15:01:21 2017
各位前辈好
我的程式ServiceConnection永远不会被呼叫
不知道是那里出了问题
Debug了2天..
贴上程式码
http://ideone.com/46JLBU
另外
AndroidManifest.xml
也加上了
<service
android:name="com.topway.swiftplayservic.IPlayAIDLServicee"
android:process=":remote"
android:exported="true"
android:enabled="true">
<intent-filter>
<action android:name="SwiftPlayService"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</service>
不知道原因出在那边
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 202.175.124.66
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1500620486.A.863.html
1F:→ ssccg: 你的intent干麻setPackage? 传的还是class不是package? 07/21 15:09
2F:→ ssccg: 另外你new Intent用到的是String action这个ctor 07/21 15:12
你好
我一开始也没有setPackage
是看了这个才加上去
https://goo.gl/5CsxZC
我不加或是把他改成intent.setPackage("com.topway.swiftplayservice");
也是没有解决问题
另外你new Intent用到的是String action这个ctor
这个我不懂是什麽意思
new Intent我试了很多方法
例如
Intent intent = new Intent(MainActivity.this, IPlayAIDLService.class);
也还是不行 谢谢你的回覆
看着我的bindService一直回传false 我也快不行了...
※ 编辑: winsummer (202.175.124.66), 07/21/2017 15:29:08
※ 编辑: winsummer (202.175.124.66), 07/21/2017 15:34:53
3F:→ ssccg: 简单的说你现在这个写法,会变成去找package name为 07/21 16:00
4F:→ ssccg: com.topway.swiftplayservice.IPlayAIDLService的App中 07/21 16:00
5F:→ ssccg: manifest里有个intent filter的action叫做 07/21 16:01
6F:→ ssccg: com.topway.swiftplayservice.IPlayAIDLService的service 07/21 16:01
7F:→ ssccg: 但是你manifest里action是SwiftPlayService 07/21 16:03
8F:→ ssccg: 至於package name是什麽你没写,不过我想不会是class name 07/21 16:03
9F:→ ssccg: 你不加或是改成别的当然也没用,因为没有符合的action 07/21 16:08
你好 在此先感谢你的回覆
我的package name 为 package com.example.fox.watchtest;
而AIDL是外部提供的jar, 不是我开发的
分别为
import com.topway.swiftplayservice.IPlayAIDLService;
import com.topway.swiftplayservice.PlayParams;
所以我要改成
intent.setPackage("com.example.fox.watchtest");
然後manifest里action也要更改为
com.example.fox.watchtest
这样? 感谢回覆
※ 编辑: winsummer (202.175.124.66), 07/21/2017 16:28:03
10F:→ ssccg: 你是要呼叫别的App中的service? 07/21 16:35
11F:→ ssccg: manifest不用写,Intent要看对方的manifest怎麽写的 07/21 16:40
12F:→ winsummer: 那getPackage也不用写吗 07/21 17:05
13F:→ ssccg: setPackage是限定找特定的app,通常是像Intent.ACTION_VIEW 07/21 17:26
14F:→ ssccg: 这种会找到一堆的Intent时选特定app用 07/21 17:27
15F:→ ssccg: 如果有正确的ComponentName(package name + class name) 07/21 17:27
16F:→ ssccg: 其他都不需要,如果是用action,像这种service通常也不太会 07/21 17:29
17F:→ ssccg: 重复也不需要 07/21 17:29
18F:→ winsummer: 了解 谢谢解答 07/24 11:04
19F:推 KeySabre: intent 该是 implicit 或 explicit 的问题 08/04 02:17