So it seems that I only have following choices: 1. write my own JNI to access my service. 2. hack the ApplicationContext to add my service into into getSystemService. I also need to build my own service class into android.app package. In my client, I will call getSystemService collect my service handle and do binder operations.
Yi On Tue, Mar 31, 2009 at 2:31 PM, Dianne Hackborn <hack...@android.com>wrote: > It is not in the SDK, and as a rule applications should not be directly > accessing system services. You'll note that there are tons of system > services in the standard android platform, and they all have appropriate SDK > APIs for calling them (and the Context.getSystemService() API to allow apps > to access them). > > > On Tue, Mar 31, 2009 at 1:47 PM, Yi Sun <beyo...@gmail.com> wrote: > >> But, the ServiceManager is not an exported java API at all. >> Thanks >> Yi >> >> >> On Tue, Mar 31, 2009 at 12:48 AM, Dianne Hackborn <hack...@android.com>wrote: >> >>> You are mixing two different things. You are creating a low-level core >>> system service, and then trying to connect to it as if it is a high-level >>> application service. If you are using service manager to publish it, you >>> need to use service manager (in Java ServiceManager) to access it. >>> >>> >>> On Mon, Mar 30, 2009 at 10:45 PM, Yi Sun <beyo...@gmail.com> wrote: >>> >>>> Hi Dianne, >>>> Thanks for the reply. Actually here is what I want to do: >>>> On the service side (C code), reusing binder.c in the service_manager >>>> directory. So my code will call >>>> 1. binder_open, >>>> 2. bio stuff to build an io block for adding service, >>>> 3.binder_call to add service to service_manager. >>>> 4. binder_loop to wait for requests. (Just do a quick prototype here, so >>>> no multi-threads) >>>> >>>> On the client side (java), send request to the service I built and >>>> receive replies. >>>> Now, if I run /system/bin/service list, I can see my service like this: >>>> # /system/bin/service list >>>> Found 43 services: >>>> 0 Binder.Test.IBindertest: [] >>>> >>>> But, on the java side, I can not really get the binder object for this >>>> service. The bindService call failed with following error messages: >>>> W/ActivityManager( 581): Unable to start service Intent { >>>> action=Binder.Test.IBindertest }: not found >>>> >>>> Yi >>>> >>>> On Mon, Mar 30, 2009 at 10:01 PM, Dianne Hackborn >>>> <hack...@android.com>wrote: >>>> >>>>> If you are writing a low-level system service, the high-level Service >>>>> API (onBind() etc) is irrelevant. The aidl stuff is part of the primitive >>>>> Binder IPC stuff; Service is a much higher-level facility built on top of >>>>> it. >>>>> >>>>> >>>>> On Mon, Mar 30, 2009 at 7:21 PM, beyounn <beyo...@gmail.com> wrote: >>>>> >>>>>> >>>>>> Ok, let me try out the AIDL part, it seems simpler. But I do have a >>>>>> question about it and hope you could give more hits. I took a look on >>>>>> the AIDL, it seems that on the service(server) side, we have to >>>>>> implement onBind and other methods. For my case, does it mean that I >>>>>> don't need to care about the service side works and only need to >>>>>> implement something like RemoteServiceBinding.java in the example code >>>>>> for my self? >>>>>> Thanks >>>>>> Yi >>>>>> >>>>>> On Mar 30, 6:36 pm, Dave Sparks <davidspa...@android.com> wrote: >>>>>> > You can write AIDL to generate your Java binding, or you can write >>>>>> > your own native binding and put a JNI layer on top of that. If you >>>>>> > don't plan on calling your service from native code, AIDL is much >>>>>> > easier. >>>>>> > >>>>>> > On Mar 30, 6:08 pm, beyounn <beyo...@gmail.com> wrote: >>>>>> > >>>>>> > > Hello, >>>>>> > > I'm writing a service by C. My code calls binder to add a service >>>>>> > > called "myservice" into servicemanager. And I can add "myservice" >>>>>> > > without any problem. Also, when I run "/system/bin/service list", >>>>>> it >>>>>> > > shows the service added by me. The question is -- What is the >>>>>> correct >>>>>> > > way to access this service from my application that is written by >>>>>> > > java? >>>>>> > > Thanks >>>>>> > > Yi >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Dianne Hackborn >>>>> Android framework engineer >>>>> hack...@android.com >>>>> >>>>> Note: please don't send private questions to me, as I don't have time >>>>> to provide private support. All such questions should be posted on public >>>>> forums, where I and others can see and answer them. >>>>> >>>>> >>>>> >>>>> >>>>> >>>> >>>> >>>> >>> >>> >>> -- >>> Dianne Hackborn >>> Android framework engineer >>> hack...@android.com >>> >>> Note: please don't send private questions to me, as I don't have time to >>> provide private support. All such questions should be posted on public >>> forums, where I and others can see and answer them. >>> >>> >>> >>> >> >> >> > > > -- > Dianne Hackborn > Android framework engineer > hack...@android.com > > Note: please don't send private questions to me, as I don't have time to > provide private support. All such questions should be posted on public > forums, where I and others can see and answer them. > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "android-framework" group. To post to this group, send email to android-framework@googlegroups.com To unsubscribe from this group, send email to android-framework+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-framework?hl=en -~----------~----~----~----~------~----~------~--~---