Could you please explain more what you are trying to do?  If you are trying
to add a service with a public API for applications to use, one approach you
can take is to make a shared library that apps request with <uses-library>
which has APIs to retrieving and calling the service.  That shared library
can use non-SDK classes like the ServiceManager, since it is intended to be
bundled with the device.

But I really don't know enough about what you are trying to accomplish to
help more.

On Tue, Mar 31, 2009 at 3:54 PM, Yi Sun <beyo...@gmail.com> wrote:

> 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.
>>
>>
>>
>>
>
> >
>


-- 
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to