[問題] AIDL永遠不會connect

看板AndroidDev作者 (winsummer)時間7年前 (2017/07/21 15:01), 7年前編輯推噓1(1018)
留言19則, 3人參與, 最新討論串1/1
各位前輩好 我的程式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://www.ptt.cc/bbs/AndroidDev/M.1500620486.A.863.html

07/21 15:09, , 1F
你的intent幹麻setPackage? 傳的還是class不是package?
07/21 15:09, 1F

07/21 15:12, , 2F
另外你new Intent用到的是String action這個ctor
07/21 15:12, 2F
你好 我一開始也沒有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

07/21 16:00, , 3F
簡單的說你現在這個寫法,會變成去找package name為
07/21 16:00, 3F

07/21 16:00, , 4F
com.topway.swiftplayservice.IPlayAIDLService的App中
07/21 16:00, 4F

07/21 16:01, , 5F
manifest裡有個intent filter的action叫做
07/21 16:01, 5F

07/21 16:01, , 6F
com.topway.swiftplayservice.IPlayAIDLService的service
07/21 16:01, 6F

07/21 16:03, , 7F
但是你manifest裡action是SwiftPlayService
07/21 16:03, 7F

07/21 16:03, , 8F
至於package name是什麼你沒寫,不過我想不會是class name
07/21 16:03, 8F

07/21 16:08, , 9F
你不加或是改成別的當然也沒用,因為沒有符合的action
07/21 16:08, 9F
你好 在此先感謝你的回覆 我的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

07/21 16:35, , 10F
你是要呼叫別的App中的service?
07/21 16:35, 10F

07/21 16:40, , 11F
manifest不用寫,Intent要看對方的manifest怎麼寫的
07/21 16:40, 11F

07/21 17:05, , 12F
那getPackage也不用寫嗎
07/21 17:05, 12F

07/21 17:26, , 13F
setPackage是限定找特定的app,通常是像Intent.ACTION_VIEW
07/21 17:26, 13F

07/21 17:27, , 14F
這種會找到一堆的Intent時選特定app用
07/21 17:27, 14F

07/21 17:27, , 15F
如果有正確的ComponentName(package name + class name)
07/21 17:27, 15F

07/21 17:29, , 16F
其他都不需要,如果是用action,像這種service通常也不太會
07/21 17:29, 16F

07/21 17:29, , 17F
重複也不需要
07/21 17:29, 17F

07/24 11:04, , 18F
了解 謝謝解答
07/24 11:04, 18F

08/04 02:17, , 19F
intent 該是 implicit 或 explicit 的問題
08/04 02:17, 19F
文章代碼(AID): #1PSQR6XZ (AndroidDev)
文章代碼(AID): #1PSQR6XZ (AndroidDev)