Network location provider not giving location android

前端 未结 3 2021
名媛妹妹
名媛妹妹 2020-12-10 09:47

I am developing a small android application in which I want to find out the user\'s current location by using the network provider. I tried this in following ways but it\'s

相关标签:
3条回答
  • 2020-12-10 10:18

    Make sure you enable Location Services in Settings! That should be the problem. It might be disabled (and this setting will usually be found in Location and Security in Settings)

    Let me know if it works!

    0 讨论(0)
  • 2020-12-10 10:21

    Is your network provider enabled?

    boolean network_enabled;
    try {
        network_enabled = locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
    } catch(Exception ex) {
       ex.printStackTrace();
    }
    
    0 讨论(0)
  • 2020-12-10 10:25

    I hope this part of the code will help you extracted from vogella.

    public class ShowLocationActivity extends Activity implements LocationListener {
    
        private TextView latituteField;
        private TextView longitudeField;
        private LocationManager locationManager;
        private String provider;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            latituteField = (TextView) findViewById(R.id.TextView02);
            longitudeField = (TextView) findViewById(R.id.TextView04);
            // Get the location manager
            locationManager = (LocationManager) 
                    getSystemService(Context.LOCATION_SERVICE);
            // Define the criteria how to select the locatioin provider -> use
            // default
            Criteria criteria = new Criteria();
            provider = locationManager.getBestProvider(criteria, false);
            Location location = locationManager.getLastKnownLocation(provider);
            // Initialize the location fields
            if (location != null) {
                System.out.println("Provider " + provider + " has been selected.");
                onLocationChanged(location);
            } else {
                latituteField.setText("Location not available");
                longitudeField.setText("Location not available");
            }
        }
    
        /* Request updates at startup */
        @Override
        protected void onResume() {
            super.onResume();
            locationManager.requestLocationUpdates(provider, 400, 1, this);
        }
    
        /* Remove the locationlistener updates when Activity is paused */
        @Override
        protected void onPause() {
            super.onPause();
            locationManager.removeUpdates(this);
        }
    
        @Override
        public void onLocationChanged(Location location) {
            int lat = (int) (location.getLatitude());
            int lng = (int) (location.getLongitude());
            latituteField.setText(String.valueOf(lat));
            longitudeField.setText(String.valueOf(lng));
        }
    
        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {}
    
        @Override
        public void onProviderEnabled(String provider) {
            Toast.makeText(this, "Enabled new provider " + provider,
                Toast.LENGTH_SHORT).show();
        }
    
        @Override
        public void onProviderDisabled(String provider) {
            Toast.makeText(this, "Disabled provider " + provider,
                Toast.LENGTH_SHORT).show();
        }
    }
    
    0 讨论(0)
提交回复
热议问题