如何提示用户启用GPS_PROVIDER和/或NETWORK_PROVIDER?

我需要获取用户的位置。 我放在清单

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

如何提示用户启用GPS_PROVIDER和/或NETWORK_PROVIDER?

Solutions Collecting From Web of "如何提示用户启用GPS_PROVIDER和/或NETWORK_PROVIDER?"

您可以启动位置设置的选项意向。

 Intent gpsOptionsIntent = new Intent( android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(gpsOptionsIntent); 

如果GPSclosures,则LOCATION_MODE将为LOCATION_MODE_OFF,这将返回值0。

 int off = Settings.Secure.getInt(getContentResolver(), Settings.Secure.LOCATION_MODE); if(off==0){ Intent onGPS = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(onGPS); } 

您可以使用

 Intent intent = new Intent(Settings.ACTION_SECURITY_SETTINGS); startActivity(intent); 

检查gps后。

完整的源代码可以在这里find,或者你可以参考SO ANSWER

实现LocationListner:如此

  @Override public void onLocationChanged(Location location) { } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { if (provider.equals(LocationManager.GPS_PROVIDER)) { showGPSDiabledDialog(); } } 

显示对话框打开设置:

 public void showGPSDiabledDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("GPS Disabled"); builder.setMessage("Gps is disabled, in order to use the application properly you need to enable GPS of your device"); builder.setPositiveButton("Enable GPS", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), GPS_ENABLE_REQUEST); } }).setNegativeButton("No, Just Exit", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); mGPSDialog = builder.create(); mGPSDialog.show(); } 

在您的OnCreate方法调用中:

  LocationManager mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE); if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { return; } mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 

和ovveride onActivityResult方法来testing用户是否正确激活gps

  @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == GPS_ENABLE_REQUEST) { if (mLocationManager == null) { mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE); } if (!mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { showGPSDiabledDialog(); } } else { super.onActivityResult(requestCode, resultCode, data); } }