首先请参考:http://blog.csdn.net/sam_zhang1984/article/details/7425156
但是其中的方法,在android4.0以后就用不成了,但上面要求要实现这个功能总不能像百度地图那样,没有开GPS,就提醒你开启,你点设置后,自动跳到开启GPS界面:
手动设置。。。
但是想要自动开启怎么办,今天查了好多方法,大多回答都是android4.0以后不行了,快放弃的时候无意间看见一段代码,尝试了下,有点成功了。。。
代码如下:(一个函数用来判断GPS功能是否开启,没开启的话,强制开启)
public void turnGPSOn() { Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE"); intent.putExtra("enabled", true); this.sendBroadcast(intent); 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")); this.sendBroadcast(poke); } }但是如果这个函数直接在OnCreate中调用,程序会立马终止运行,但是能看到通知栏有变化:
这说明成功开启了,但为什么会一闪而过呢,目前为止还没弄懂。。。
如果非要用这种方法,目前有一种解决方法:
就是在turnGPSOn()函数调用后,立马用一个Toast,如:
turnGPSOn();
toast=Toast.makeText(getApplication(), "GPS服务强制开启",Toast.LENGTH_SHORT);
在这个函数调用后,加上一个toast,这样程序就不会一闪而过正常运行,至于为什么。。。呵呵呵,我也没弄懂