The Intent you are making to bind to the service is trying to find a
component in your own .apk, not the other.

The last permission error you mention is because you need to
explicitly request to use even your own permissions.

On Nov 10, 9:31 pm, Raktim Das <[EMAIL PROTECTED]> wrote:
> Hi,
> I am using 0.9 beta SDK.
> I want to have a service defined within one application to be
> invokable from another.
> The application hosting the service has, in its manifest, the
> following inside the application tag:
>
> <service android:name=".service.BackgroundService"
> android:process=":remote"  android:exported="true"
> android:permission="android.permission.ACCESS_BACKGROUND_SERVICE">
>         <intent-filter>
>                 <action android:name="com.abc.xyz.service.BackgroundService" 
> />
>         </intent-filter>
> </service>
>
> It also has the following inside the manifest tag:
> <permission android:name="android.permission.BACKGROUND_SERVICE"
> android:protectionLevel="dangerous"/>
>
> In my client application's manifest xml file, I have the following
> inside manifest tag:
> <uses-permission
> android:name="android.permission.ACCESS_BACKGROUND_SERVICE" />
>
> The client Activity code has the following API called from its
> onCreate() method:
>
>     private void startBackgroundService()
>     {
>         mConnection = new ServiceConnection()
>         {
>             public void onServiceConnected(ComponentName className,
> IBinder service)
>             {
>                 Log.i(TAG, "Connected to background service");
>                 mService =
> BackgroundService.Stub.asInterface(service);
>             }
>
>             public void onServiceDisconnected(ComponentName className)
>             {
>                 mService = null;
>                 Log.i(TAG, "Background service disconnected");
>             }
>         };
>
>         Intent intent = new Intent(this,
>                 com.abc.xyz.service.BackgroundService.class);
>
>         startService(intent);
>
>         boolean result = bindService(intent, mConnection,
> Context.BIND_AUTO_CREATE);
>
>         Log.i(TAG, "Background service bind result:  " + result);
>     }
>
> When I run the client Activity, it can not bind to the service:
> - the log statement at the end has "Background service bind result:
> false".
> - the onServiceConnected() method is not called
> - There is a waring log from ActivityManager:
> WARN/ActivityManager(58): Unable to start service Intent
> { comp={com.abc.xyz.client/com.abc.xyz.service.BackgroundService} }:
> not found
>
> I have tried running the same without any permission in the service
> application manifest and also without the uses-permission tag in
> client. The result was the same.
>
> But when I run a similar client code inside my service application
> (without specifying any permissions), it runs perfectly.
>
> Finally, the most peculiar thing is happening when I am running this
> client code inside my service application but with the permissions
> specified (as written above) in the manifest - it runs with this error
> at the statement "startService(intent)":
>
> Caused by: java.lang.SecurityException: Not allowed to start service
> Intent { comp={com.abc.xyz/com.abc.xyz.service.BackgroundService} }
> without permission android.permission.ACCESS_BACKGROUND_SERVICE
>
> Any hint on this will be highly appreciated. I'd also like to know
> whether I can start and access the service from an ActivityGroup
> outside the service application domain.
>
> Thanks,
> -Raktim.
--~--~---------~--~----~------------~-------~--~----~
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
[EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to