如何在android中启用gps

当它关闭以检索当前位置时如何在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中,您可以实现获取位置时要执行的操作

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...