当它关闭以检索当前位置时如何在android中打开gps
我测试了两种方法
private void turnGPSOn(){
String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if(!provider.contains("gps")){ //if gps is disabled
final Intent poke = new Intent();
poke.setClassName("com.android.settings", "com.android.settings.widget.Settingsappwidgetprovider");
poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
poke.setData(Uri.parse("3"));
sendbroadcast(poke);
}
}
private void turnGPSOff(){
String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if(provider.contains("gps")){ //if gps is enabled
final Intent poke = new Intent();
poke.setClassName("com.android.settings", "com.android.settings.widget.Settingsappwidgetprovider");
poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
poke.setData(Uri.parse("3"));
sendbroadcast(poke);
}
}
而这种方法
enaABLE GPS:
Intent intent=new Intent("android.location.GPS_ENABLED_CHANGE");
intent.putExtra("enabled", true);
sendbroadcast(intent);
disABLE GPS:
Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
intent.putExtra("enabled", false);
sendbroadcast(intent);
但是当通过这些方法之一打开gps是执行代码恢复位置时,它会显示
Toast.makeText(LbsGeocodingActivity.this,
"Provider disabled by the user. GPS turned off",
Toast.LENGTH_LONG).show();
解决方法:
您无法为用户启用GPS,您可以做的是,如果GPS已禁用,则会提示用户发送消息,要求他启用GPS并将其发送到设置以启用它
使用此代码:
Intent gpsOptionsIntent = new Intent(
android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(gpsOptionsIntent);
http://java-blog.kbsbng.com/2012/08/displaying-dialog-in-android-to-prompt.html
要获得该位置,请执行此操作
locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
/*try to see if the location stored on android is close enough for you,and avoid rerequesting the location*/
Location location = locationManager.getLastKNownLocation(LocationManager.GPS_PROVIDER);
if (location == null
|| location.getTime()
- Calendar.getInstance().getTimeInMillis() > MAX_LAST_LOCATION_TIME)
{
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, TIME_INTERVAL, LOCATION_INTERVAL, yourLocationListener);
}
else
{
//do your handling if the last kNown location stored on android is enouh for you
}
在yourLocationListener中,您可以实现获取位置时要执行的操作