Hi All, When my client code calls bindService it was fine and it calls onServiceConnected, there i am calling the interface method using the XXXX.Stub.asInterface(service) object and there only it gives me bunch of error as:
02-13 17:14:52.239: WARN/Parcel(1035): **** enforceInterface() expected 'oem.android.proj1.IRemoteService' but read 'oem.android.proj2.IRemoteService' 02-13 17:14:52.249: DEBUG/AndroidRuntime(1071): Shutting down VM 02-13 17:14:52.249: WARN/dalvikvm(1071): threadid=3: thread exiting with uncaught exception (group=0x40010e28) 02-13 17:14:52.249: ERROR/AndroidRuntime(1071): Uncaught handler: thread main exiting due to uncaught exception 02-13 17:14:52.259: ERROR/AndroidRuntime(1071): java.lang.SecurityException: Binder invocation to an incorrect interface 02-13 17:14:52.259: ERROR/AndroidRuntime(1071): at android.os.Parcel.readException(Parcel.java:1234) 02-13 17:14:52.259: ERROR/AndroidRuntime(1071): at android.os.Parcel.readException(Parcel.java:1222) 02-13 17:14:52.259: ERROR/AndroidRuntime(1071): at oem.android.proj2.IRemoteService$Stub$Proxy.display(IRemoteService.java:108) 02-13 17:14:52.259: ERROR/AndroidRuntime(1071): at oem.android.proj2.RemoteServiceBinding.onListItemClick(RemoteServiceBinding.java:147) 02-13 17:14:52.259: ERROR/AndroidRuntime(1071): at android.app.ListActivity$2.onItemClick(ListActivity.java:312) 02-13 17:14:52.259: ERROR/AndroidRuntime(1071): at android.widget.AdapterView.performItemClick(AdapterView.java:283) 02-13 17:14:52.259: ERROR/AndroidRuntime(1071): at android.widget.ListView.performItemClick(ListView.java:3049) 02-13 17:14:52.259: ERROR/AndroidRuntime(1071): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1415) 02-13 17:14:52.259: ERROR/AndroidRuntime(1071): at android.os.Handler.handleCallback(Handler.java:542) 02-13 17:14:52.259: ERROR/AndroidRuntime(1071): at android.os.Handler.dispatchMessage(Handler.java:86) 02-13 17:14:52.259: ERROR/AndroidRuntime(1071): at android.os.Looper.loop(Looper.java:123) 02-13 17:14:52.259: ERROR/AndroidRuntime(1071): at android.app.ActivityThread.main(ActivityThread.java:3742) 02-13 17:14:52.259: ERROR/AndroidRuntime(1071): at java.lang.reflect.Method.invokeNative(Native Method) 02-13 17:14:52.259: ERROR/AndroidRuntime(1071): at java.lang.reflect.Method.invoke(Method.java:515) 02-13 17:14:52.259: ERROR/AndroidRuntime(1071): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739) 02-13 17:14:52.259: ERROR/AndroidRuntime(1071): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:497) 02-13 17:14:52.259: ERROR/AndroidRuntime(1071): at dalvik.system.NativeStart.main(Native Method) My Server and Client code both are in different package i mean in different .APK. I have ran the Service code first and these are the below files i am using: IRemoteService.aidl -> have the interfaces DisplayPage.java --> Activity that starts the RemoteService.java RemoteService.java --> Service and impliments the interface methods AndroidManifest.xml code: <application android:icon="@drawable/icon" android:label= "@string/app_name"> <activity android:name=".DisplayPage" android:label= "@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name="RemoteService" android:exported="true" class="RemoteService" android:process=":remote"> <intent-filter> <action android:name="oem.android.proj2.IRemoteService"/> <action android:name="oem.android.proj2.REMOTE_SERVICE"/> </intent-filter> </service> </application> IRemoteService.aidl code: package oem.android.proj1; interface IRemoteService{ void display(); RemoteService.java code: package oem.android.proj1; public class RemoteService extends Service { public void onCreate() { super.onCreate(); } public IBinder onBind(Intent intent) { If (IRemoteService.class .getName().equals(intent.getAction())){ return mBinder; } return mBinder;}} private final IRemoteService.Stub mBinder = new IRemoteService.Stub(){ public void display(){ Toast.makeText(RemoteService.this, "RemoteService -- display function", Toast.LENGTH_SHORT).show(); } };} Then i ran the Client code and these are the below files i am using: IRemoteService.aidl -> have the interfaces RemoteServiceBinding.java --> Activity that that calls the bindService and calls the Service's methods. AndroidManifest.xml code: <application android:icon="@drawable/icon" android:label= "@string/app_name"> <activity android:name=".RemoteServiceBinding" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> <action android:name="oem.android.proj1.IRemoteService"/> <action android:name="oem.android .proj1.IRemoteService.display"/> </intent-filter> </activity> IRemoteService.aidl code: package oem.android.proj1; interface IRemoteService{ void display(); RemoteServiceBinding.java code: package oem.android.proj2; public class RemoteServiceBinding extends ListActivity { private Context ctx; IRemoteService mService = null; private String[] mStrings = {"Bind", "Conn"}; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); XXXXXXXXX} private ServiceConnection mConnection = new ServiceConnection() { public void onServiceConnected(ComponentName className,IBinder service) { mService = IRemoteService.Stub.asInterface(service); } public void onServiceDisconnected(ComponentName name) { mService = null;} }; protected void onListItemClick(ListView l, View v, int position, long id) { if(position ==0) { bindService(new Intent(IRemoteService.class .getName()), mConnection, Context.BIND_AUTO_CREATE); } if(position ==1) { try { mService.display(); } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } i have set the ListItem listener when i press my bind one it should call the bindService and it is doing correctly, but when i click the Conn it should call my display() method but is giving me errors that i have mentioned on the top. Can someone plz help me what went wrong on my code, i am assuming that some thing broken in my AndroidManifest.xml code only. Actually i am still in dilema what all thing to set in AndroidManifest.xml file in both Client and Server site, like permisson or any other things. Thanks & Regards, Sunil Hans <hkess...@gmail.com> Sent by: android-developers@googlegroups.com 02/13/2009 01:40 AM Please respond to android-developers@googlegroups.com To Android Developers <android-developers@googlegroups.com> cc Subject [android-developers] Re: Unable to start service Intent error in Client-Server project On Feb 12, 2:47 pm, Dianne Hackborn <hack...@android.com> wrote: > Um. This is the package your service is in: > > <manifest xmlns:android="http://schemas.android.com/apk/res/android" > package="*com.android.TestService*" > > And yet you are trying to start a service in the other package: > > Unable to start service > Intent { comp={*com.android.servicemonitor*/com.android.TestService.TestService} That's what the error is, I'm simply calling start service like this: if( null == startService( new Intent( this, TestService.class ) ) ) { if( null != in_oOutput ) { in_oOutput.append( "\nstartService returned 'null'" ); } return false; } My client class has imported TestService via: import com.android.TestService.*; So, I'm wondering why, unless I declare the service in the client's manifest as I explained before (and change absolutely nothing else) does it work just fine, but without the service line in the client manifest it is trying, for some reason, to find it in the wrong place. When it works, the activity manager reports in the log: "02-12 15:08:43.541: INFO/ActivityManager(50): Start proc com.android.servicemonitor:remote for service com.android.servicemonitor/com.android.TestService.TestService: pid=621 uid=10018 gids={}" So it would seem that com.android.servicemonitor/ com.android.TestService.TestService is perfectly fine. Hans ______________________________________________________________________ ______________________________________________________________________ --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---