Android provides the setting. Secure class. The official explanation of this class is to obtain the property value set by the system, but it cannot be modified. You need to set the property value through the system ui or a special API. However, after 2.2, setting. Secure added the islocationproviderenabled and setlocationproviderenabled methods. The test showed that the islocationproviderenabled method obtained the GPS status, but if you modify the GPS status:
Settings. Secure. setlocationproviderenabled (getcontentresolver (), locationmanager. gps_provider, true );
In addition, the following permissions are added to the mainfest file:
<Uses-Permission Android: Name = "android. Permission. write_settings"/>
<Uses-Permission Android: Name = "android. Permission. write_secure_settings"/>
ProgramRen will report the following error:
: Caused by: Java. Lang. securityexception: Permission Denial: writing to secure settings requires Android. Permission. write_secure_settings
The final solution is as follows:
Intent gpsintent = new intent ();
Gpsintent. setclassname ("com. Android. Settings ",
"Com. Android. settings. widget. settingsappwidgetprovider ");
Gpsintent. addcategory ("android. Intent. Category. Alternative ");
Gpsintent. setdata (URI. parse ("custom: 3 "));
Try {
Pendingintent. getbroadcast (this, 0, gpsintent, 0). Send ();
}
Catch (canceledexception e ){
E. printstacktrace ();
}
In this way, the function of modifying the GPS status is achieved. If this method is developed, the GPS will be disabled, and vice versa.
Reference: http://www.learningandroid.net/blog/advance/programmable-toggle-gps/
From: http://mycoding.iteye.com/blog/1275162