android4.0中强制开启GPS

首先请参考:http://blog.csdn.net/sam_zhang1984/article/details/7425156

但是其中的方法,在android4.0以后就用不成了,但上面要求要实现这个功能总不能像百度地图那样,没有开GPS,就提醒你开启,你点设置后,自动跳到开启GPS界面:

android4.0中强制开启GPS_第1张图片


手动设置。。。

但是想要自动开启怎么办,今天查了好多方法,大多回答都是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中调用,程序会立马终止运行,但是能看到通知栏有变化:

android4.0中强制开启GPS_第2张图片


这说明成功开启了,但为什么会一闪而过呢,目前为止还没弄懂。。。

如果非要用这种方法,目前有一种解决方法:

就是在turnGPSOn()函数调用后,立马用一个Toast,如:

turnGPSOn(); 
toast=Toast.makeText(getApplication(), "GPS服务强制开启",Toast.LENGTH_SHORT);


在这个函数调用后,加上一个toast,这样程序就不会一闪而过正常运行,至于为什么。。。呵呵呵,我也没弄懂尴尬

你可能感兴趣的:(android4.0中强制开启GPS)