→ ssccg: 你的intent幹麻setPackage? 傳的還是class不是package? 07/21 15:09
→ 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
→ ssccg: 簡單的說你現在這個寫法,會變成去找package name為 07/21 16:00
→ ssccg: com.topway.swiftplayservice.IPlayAIDLService的App中 07/21 16:00
→ ssccg: manifest裡有個intent filter的action叫做 07/21 16:01
→ ssccg: com.topway.swiftplayservice.IPlayAIDLService的service 07/21 16:01
→ ssccg: 但是你manifest裡action是SwiftPlayService 07/21 16:03
→ ssccg: 至於package name是什麼你沒寫,不過我想不會是class name 07/21 16:03
→ 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
→ ssccg: 你是要呼叫別的App中的service? 07/21 16:35
→ ssccg: manifest不用寫,Intent要看對方的manifest怎麼寫的 07/21 16:40
→ winsummer: 那getPackage也不用寫嗎 07/21 17:05
→ ssccg: setPackage是限定找特定的app,通常是像Intent.ACTION_VIEW 07/21 17:26
→ ssccg: 這種會找到一堆的Intent時選特定app用 07/21 17:27
→ ssccg: 如果有正確的ComponentName(package name + class name) 07/21 17:27
→ ssccg: 其他都不需要,如果是用action,像這種service通常也不太會 07/21 17:29
→ ssccg: 重複也不需要 07/21 17:29
→ winsummer: 了解 謝謝解答 07/24 11:04
推 KeySabre: intent 該是 implicit 或 explicit 的問題 08/04 02:17