我在看遠程android服務的commonwares例子。我不斷收到這個錯誤logcatAndroid遠程服務
10-22 19:50:33.947: E/AndroidRuntime(30624): FATAL EXCEPTION: main
10-22 19:50:33.947: E/AndroidRuntime(30624): java.lang.SecurityException: Binder invocation to an incorrect interface
10-22 19:50:33.947: E/AndroidRuntime(30624): at android.os.Parcel.readException(Parcel.java:1322)
10-22 19:50:33.947: E/AndroidRuntime(30624): at android.os.Parcel.readException(Parcel.java:1276)
10-22 19:50:33.947: E/AndroidRuntime(30624): at com.commonsware.android.advservice.client.IScript$Stub$Proxy.executeScript(IScript.java:82)
10-22 19:50:33.947: E/AndroidRuntime(30624): at com.commonsware.android.advservice.client.RemoteClientNewActivity$2.onClick(RemoteClientNewActivity.java:59)
10-22 19:50:33.947: E/AndroidRuntime(30624): at android.view.View.performClick(View.java:2532)
10-22 19:50:33.947: E/AndroidRuntime(30624): at android.view.View$PerformClick.run(View.java:9277)
10-22 19:50:33.947: E/AndroidRuntime(30624): at android.os.Handler.handleCallback(Handler.java:587)
10-22 19:50:33.947: E/AndroidRuntime(30624): at android.os.Handler.dispatchMessage(Handler.java:92)
10-22 19:50:33.947: E/AndroidRuntime(30624): at android.os.Looper.loop(Looper.java:143)
10-22 19:50:33.947: E/AndroidRuntime(30624): at android.app.ActivityThread.main(ActivityThread.java:4196)
10-22 19:50:33.947: E/AndroidRuntime(30624): at java.lang.reflect.Method.invokeNative(Native Method)
10-22 19:50:33.947: E/AndroidRuntime(30624): at java.lang.reflect.Method.invoke(Method.java:507)
10-22 19:50:33.947: E/AndroidRuntime(30624): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
我一直在嘗試解決它一段時間了。
在這個活動是我做的
Intent i = new Intent("com.commonsware.android.advservice.IScript");
bindService(i,svcConn, Context.BIND_AUTO_CREATE);
和
public void onServiceConnected(ComponentName className,IBinder binder) {
service=IScript.Stub.asInterface(binder);
if(service !=null){
message = "connected";
}
}
請誰能告訴我什麼,我做錯了。
我想到了這些行,但它們是2個獨立的項目,也是我知道授予的唯一方法從s訪問客戶端ervice是一個簡單的導入語句,並且還在服務類的清單中聲明.aidl文件的完整包名稱。仍然難倒 – Arkangel
@Arkangel:「我知道從服務中授予客戶端訪問權的唯一方式是一個簡單的導入語句」 - 我不知道你在說什麼。 「還要在服務類的清單中聲明.aidl文件的完整包名」--AIDL文件與清單無關。 [在文檔中]涵蓋了AIDL的使用(http://developer.android.com/guide/developing/tools/aidl.html),更不用說了[您正在嘗試的示例代碼的主頁](http://commonsware.com/AdvAndroid)。 – CommonsWare
解決了今天的問題...複製了包含服務中的.aidl的包到客戶端,爲客戶端活動創建了一個單獨的包,並且它可以工作。錯誤是基於客戶端軟件包名稱而不是服務軟件包名稱綁定到.aidl接口。 – Arkangel