我需要获取用户的位置。 我放在清单
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
如何提示用户启用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); } }