I'm sorry I didn't mean to post the same question so many times...it's
just that in my case it took 3 days to see the first query posted!

In addition I would like to add to my query saying that the Service
apk that I made has only a <service> component. I heard that an
Android app requires atleast 1 <activity> component. Can anyone please
help confirm this?

Thanks,
Rohan Francis

On Jan 12, 7:18 pm, Rohan Francis <[email protected]> wrote:
> Hi,
>
> Can someone help me with the steps to export a service to another
> android application?
>
> I have created a service and defined an interface which is exposed by
> the service. I want to be able to get a reference to this interface in
> another android application.
>
> package scratch.service;
> Service: DbService
> Interface: DbServiceInterface (aidl filename is
> DbServiceInterface.aidl)
>
> In the AndroidMainfest.xml for the Service:
>
> I have these lines:
> ---
>    <permission android:name="scratch.permission.DB_SERVICE_KEY"
>        android:label="DbServicePermission"
>        android:description="@string/perm_desc"
>        android:protectionLevel="dangerous"/>
>
>    <uses-permission
> android:name="scratch.application.permission.DB_SERVICE_KEY"/>
>
>    <application android:label="@string/app_name">
>        <!-- Export this service so that it can be used -->
>        <service
>            android:name=".DbService"
>            android:exported="true"
>            android:enabled="true"
>            android:permission="scratch.permission.DB_SERVICE_KEY">
>            <intent-filter>
>                <action android:name="MyDbService" />
>            </intent-filter>
>        </service>
> ---
>
> Now, moving onto the the client application that uses the Service:
>
> package scratch.activity
> Activity: DbActivity
>
> In the AndroidMainfest.xml for the Activity:
> ---
>     <uses-permission
> android:name="scratch.permission.DB_SERVICE_KEY" />
>    <application android:label="@string/app_name">
>        <activity android:name=".DbActivity"
>                  android:label="@string/app_name">
>            <intent-filter>
>                <action android:name="android.intent.action.MAIN" />
>                <category
> android:name="android.intent.category.LAUNCHER" />
>            </intent-filter>
>        </activity>
> ---
>
> I have imported scratch.service.DbServiceInterface in the source-file
> for the Activity but while building I used to get:
>
> ---
> compile:
>    [javac] Compiling 2 source files to /home/rohan/workspace/projects/
> android/MyDatabaseActivity/bin/classes
>    [javac] /home/rohan/workspace/projects/android/MyDatabaseActivity/
> src/scratch/activity/DbActivity.java:17: cannot find symbol
>    [javac] symbol  : class DbServiceInterface
>    [javac] location: package scratch.service
>    [javac] import scratch.service.DbServiceInterface;
>    [javac]                       ^
>    [javac] /home/rohan/workspace/projects/android/MyDatabaseActivity/
> src/scratch/activity/DbActivity.java:22: cannot find symbol
>    [javac] symbol  : class DbServiceInterface
>    [javac] location: class scratch.activity.DbActivity
>    [javac]     private DbServiceInterface refService = null;
>    [javac]             ^
>    [javac] /home/rohan/workspace/projects/android/MyDatabaseActivity/
> src/scratch/activity/DbActivity.java:110: package DbServiceInterface
> does not exist
>    [javac]             refService =
> DbServiceInterface.Stub.asInterface(service);
>    [javac]                                            ^
>    [javac] 3 errors
> ---
>
> To overcome this, I used:
>
> 'ant -libs <path-to-classes dir for the service>'
>
> Build errors disappear but while starting the Activity, I get:
>
> 01-09 12:05:22.577: INFO/ActivityManager(52): Starting activity:
> Intent { action=android.intent.action.MAIN categories=
> {android.intent.category.LAUNCHER} flags=0x10200000 comp=
> {scratch.activity/scratch.activity.DbActivity} }
> 01-09 12:05:22.978: INFO/ActivityManager(52): Start proc
> scratch.activity for activity scratch.activity/.DbActivity: pid=1613
> uid=10018 gids={}
> 01-09 12:05:23.117: INFO/jdwp(1613): received file descriptor 20 from
> ADB
> 01-09 12:05:24.008: WARN/dalvikvm(1613): VFY: unable to find class
> referenced in signature (Lscratch/service/DbServiceInterface;)
> 01-09 12:05:24.047: WARN/dalvikvm(1613): VFY: unable to resolve
> interface method 61: Lscratch/service/DbServiceInterface;.getNames ()
> [Ljava/lang/String;
> 01-09 12:05:24.057: WARN/dalvikvm(1613): VFY:  rejecting opcode 0x72
> at 0x0012
> 01-09 12:05:24.067: WARN/dalvikvm(1613): VFY:  rejected Lscratch/
> activity/DbActivity$3;.onClick (Landroid/view/View;)V
> 01-09 12:05:24.067: WARN/dalvikvm(1613): Verifier rejected class
> Lscratch/activity/DbActivity$3;
> 01-09 12:05:24.087: DEBUG/AndroidRuntime(1613): Shutting down VM
> 01-09 12:05:24.087: WARN/dalvikvm(1613): threadid=3: thread exiting
> with uncaught exception (group=0x40010e28)
> 01-09 12:05:24.177: ERROR/AndroidRuntime(1613): Uncaught handler:
> thread main exiting due to uncaught exception
> 01-09 12:05:24.257: ERROR/AndroidRuntime(1613): java.lang.VerifyError:
> scratch.activity.DbActivity$3
> 01-09 12:05:24.257: ERROR/AndroidRuntime(1613):     at
> scratch.activity.DbActivity.<init>(DbActivity.java:53)
> 01-09 12:05:24.257: ERROR/AndroidRuntime(1613):     at
> java.lang.Class.newInstance(Native Method)
> 01-09 12:05:24.257: ERROR/AndroidRuntime(1613):     at
> android.app.Instrumentation.newActivity(Instrumentation.java:1096)
> 01-09 12:05:24.257: ERROR/AndroidRuntime(1613):     at
> android.app.ActivityThread.performLaunchActivity(ActivityThread.java:
> 2060)
> 01-09 12:05:24.257: ERROR/AndroidRuntime(1613):     at
> android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:
> 2156)
> 01-09 12:05:24.257: ERROR/AndroidRuntime(1613):     at
> android.app.ActivityThread.access$1800(ActivityThread.java:112)
> 01-09 12:05:24.257: ERROR/AndroidRuntime(1613):     at
> android.app.ActivityThread$H.handleMessage(ActivityThread.java:1580)
> 01-09 12:05:24.257: ERROR/AndroidRuntime(1613):     at
> android.os.Handler.dispatchMessage(Handler.java:88)
> 01-09 12:05:24.257: ERROR/AndroidRuntime(1613):     at
> android.os.Looper.loop(Looper.java:123)
> 01-09 12:05:24.257: ERROR/AndroidRuntime(1613):     at
> android.app.ActivityThread.main(ActivityThread.java:3742)
> 01-09 12:05:24.257: ERROR/AndroidRuntime(1613):     at
> java.lang.reflect.Method.invokeNative(Native Method)
> 01-09 12:05:24.257: ERROR/AndroidRuntime(1613):     at
> java.lang.reflect.Method.invoke(Method.java:515)
> 01-09 12:05:24.257: ERROR/AndroidRuntime(1613):     at
> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run
> (ZygoteInit.java:739)
> 01-09 12:05:24.257: ERROR/AndroidRuntime(1613):     at
> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:497)
> 01-09 12:05:24.257: ERROR/AndroidRuntime(1613):     at
> dalvik.system.NativeStart.main(Native Method)
> 01-09 12:05:24.437: INFO/Process(52): Sending signal. PID: 1613 SIG: 3
> 01-09 12:05:24.569: INFO/dalvikvm(1613): threadid=7: reacting to
> signal 3
> 01-09 12:05:24.858: INFO/dalvikvm(1613): Wrote stack trace to '/data/
> anr/traces.txt'
>
> Please let me know why:
> [1] VerifyException(s) are thrown
> [2] what more I need to do to use a service across Andy Apps
>
> Thanks!
> Rohan
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Beginners" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-beginners?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to