Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 840179
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 15, 20262026-05-15T05:34:57+00:00 2026-05-15T05:34:57+00:00

I’m having trouble starting a Service to update an AppWidget that I’m creating as

  • 0

I’m having trouble starting a Service to update an AppWidget that I’m creating as an exercise. I’m trying to get the latitude and longitude of spoofed location data from DDMS to display in the widget. The widget uses a service to update the TextView, which may be slightly overkill, but I wanted to follow the template that seems to be common in AppWidgets that do more work (like the Forecast widget or the Wiktionary widget).

Right now, I’m not getting any error messages or strange behavior; nothing at all happens when the button is pressed. I’m a bit mystified as to what might be wrong. Could anyone out there point me in the right direction?

Additionally, if my logic for location is faulty, I’d love recommendations on that too. I’ve looked at several blogs, the Google examples, and the documentation, but I feel a little fuzzy on how it works.

Here is the current state of the widget:

public class Widget extends AppWidgetProvider
{
    static final String TAG = "Widget"; 
    /**
     * {@inheritDoc}
     */
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
                        int[] appWidgetIds)
    {
        // Create an intent to launch the service
        Intent serviceIntent = new Intent(context, UpdateService.class);

        // PendingIntent is required for the onClickPendingIntent that actually
        // starts the service from a button click
        PendingIntent pendingServiceIntent = 
            PendingIntent.getService(context, 0, serviceIntent, 0);

        // Get the layout for the App Widget and attach a click listener to the
        // button
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.main);
        views.setOnClickPendingIntent(R.id.address_button, pendingServiceIntent);
        super.onUpdate(context, appWidgetManager, appWidgetIds);
    }

    // To prevent any ANR timeouts, we perform the update in a service;
    // really should have its own thread too
    public static class UpdateService extends Service
    {
        static final String TAG = "UpdateService"; 
        private LocationManager locationManager;
        private Location currentLocation;
        private double latitude;
        private double longitude;

        public void onStart(Intent intent, int startId)
        {
            // Get a LocationManager from the system services
            locationManager = 
                (LocationManager) getSystemService(Context.LOCATION_SERVICE);

            // Register for updates from spoofed GPS
            locationManager.requestLocationUpdates("gps", 30000L, 0.0f, new LocationListener()
            {
                @Override
                public void onLocationChanged(Location location)
                {
                    currentLocation = location;
                }

                @Override
                public void onProviderDisabled(String provider) {}

                @Override
                public void onProviderEnabled(String provider) {}

                @Override
                public void onStatusChanged(String provider, int status,
                        Bundle extras) {}       
            });
            // Get the last known location from GPS
            currentLocation = 
                locationManager.getLastKnownLocation("gps");

            // Build the widget update
            RemoteViews updateViews = buildUpdate(this);

            // Push update for this widget to the home screen
            ComponentName thisWidget = new ComponentName(this, Widget.class);

            // AppWidgetManager updates AppWidget state; gets information about 
            // installed AppWidget providers and other AppWidget related state 
            AppWidgetManager manager = AppWidgetManager.getInstance(this);

            // Updates the views based on the RemoteView returned from the
            // buildUpdate method (stored in updateViews)
            manager.updateAppWidget(thisWidget, updateViews);
        }

        public RemoteViews buildUpdate(Context context)
        {
            latitude = currentLocation.getLatitude();
            longitude = currentLocation.getLongitude();
            RemoteViews updateViews = 
                new RemoteViews(context.getPackageName(), R.layout.main);
            updateViews.setTextViewText(R.id.latitude_text, "" + latitude);
            updateViews.setTextViewText(R.id.longitude_text, "" + longitude);
            return updateViews;
        }

        @Override
        public IBinder onBind(Intent intent) {
            // We don't need to bind to this service
            return null;
        }
    }

}
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-15T05:34:58+00:00Added an answer on May 15, 2026 at 5:34 am

    Try setting the last parameter of

      PendingIntent.getService(context, 0, serviceIntent, 0);
    

    to:

      PendingIntent.getService(context, 0, serviceIntent, Intent.FLAG_ACTIVITY_NEW_TASK);
    

    Also sometimes you need to addData to your intent for Android to distinguish it as something new, this is a bit hacky but seems to work so add:

      serviceIntent.setData(Uri.parse("uri::somethingrandomandunique");
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

link Im having trouble converting the html entites into html characters, (&# 8217;) i
I'm parsing an RSS feed that has an ’ in it. SimpleXML turns this
I'm having trouble keeping the paragraph square between the quote marks. In firefox the
I'm trying to create an if statement in PHP that prevents a single post
That's pretty much it. I'm using Nokogiri to scrape a web page what has
I am trying to understand how to use SyndicationItem to display feed which is
Basically, what I'm trying to create is a page of div tags, each has
I have a string like this: La Torre Eiffel paragonata all’Everest What PHP function
I've got a string that has curly quotes in it. I'd like to replace
I have a French site that I want to parse, but am running into

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.