I don't know about that last section, I haven't used the ActivityManager,
but are you sure that the service your checking is actually YOUR service? I
would double check to make sure the service you're getting back is yours.
This might have worked pre-2.0 simply by luck.

-------------------------------------------------------------------------------------------------
TreKing - Chicago transit tracking app for Android-powered devices
http://sites.google.com/site/rezmobileapps/treking


On Sun, Nov 15, 2009 at 4:06 PM, G <[email protected]> wrote:

> THANK YOU! The word I was missing in my searches was Relection or
> Reflect.
>
> I've added this method to my Service, but I'm still having a
> problem...
>
>        private void turnOnForeground(Notification notif) {
>                try {
>                        Method m =
> Service.class.getMethod("startForeground", new Class[]
> {int.class, Notification.class});
>                        m.invoke(this, NOTIFY_ID, notif);
>                } catch (Exception e) {
>                        setForeground(true);
>                        mNotificationManager.notify(NOTIFY_ID, notif);
>                }
>
>                //Debug message to show if turn on worked
>                ActivityManager am = (ActivityManager) getBaseContext
> ().getSystemService(ACTIVITY_SERVICE);
>                Toast.makeText(getBaseContext(), "Foreground: " +
> am.getRunningServices(1).get(0).foreground, Toast.LENGTH_SHORT).show
> ();
>        }
>
> The problem is the Toast at the end is still reporting false (on 2.0,
> works fine on <1.6), i.e. that the service isn't running in the
> foreground state. The code runs through and I can see in the LogCat
> that no exception is thrown or caught. Also, I tried just using
> regular ol' startForeground, then showing that same Toast, and tested
> on the 2.0 emulator, and it still reported false. Does that method of
> retrieving the foreground status just not work in 2.0 anymore (it
> works on 1.6)? How can I be sure my service is running in the
> foreground on the 2.0 emulator?
>
> On Nov 15, 4:21 pm, TreKing <[email protected]> wrote:
> > Yes, this is possible and definitely testable in the emulator. I actually
> > just update my own app to account for this change in 2.0.
> >
> > I don't think you can get around the VerifyError but you can check if the
> > method you want to use exists. Build against 2.0 and use reflection to
> check
> > if the startForeground exists and use it if it does, otherwise default to
> > setForeground.
> >
> > There was a blog post about using reflection for things like this though
> I
> > don't have the link handy.
> >
> > Hope that helps.
> >
> >
> ---------------------------------------------------------------------------
> ----------------------
> > TreKing - Chicago transit tracking app for Android-powered deviceshttp://
> sites.google.com/site/rezmobileapps/treking
> >
> >
> >
> > On Sun, Nov 15, 2009 at 2:27 PM, G <[email protected]> wrote:
> > > Hi, I've got a question as I don't have an Android 2.0 device to test
> > > on and this particular aspect seems untestable in the emulator.
> >
> > > I've got a service that needs to be run as a foreground service. I
> > > have a notification that stops it etc, so I have no problem using
> > > startForeground instead of setForeground. However, I'd like to have 1
> > > version of my app that works across all platforms... Is this possible?
> > > If my app is compiled with Android 1.5 and uses setForeground, then
> > > will that command actually work on an Android 2.0 device, or does it
> > > not matter which sdk was used to compile? I've tried compiling with
> > > 2.0, and surrounding the call to startForeground with a try/catch, but
> > > that throws a VerifyError when the service is started, when run on a
> > > 1.5/6 device since startForeground doesn't exist there. Can I catch
> > > and ignore the VerifyError somehow and make it work that way?
> >
> > > Any help would be appreciated, I really don't want to have to make a
> > > 2nd branch of my app.
> >
> > > Regards,
> > > Geoff
> >
> > > --
> > > You received this message because you are subscribed to the Google
> > > Groups "Android Developers" group.
> > > To post to this group, send email to
> [email protected]
> > > To unsubscribe from this group, send email to
> > > [email protected]<android-developers%[email protected]><android-developers%2Bunsubs
> [email protected]>
> > > For more options, visit this group at
> > >http://groups.google.com/group/android-developers?hl=en
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]<android-developers%[email protected]>
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" 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-developers?hl=en

Reply via email to