要在应用程序中操作GPS开关需要权限: 

Java代码  
  1. "android.permission.WRITE_SECURE_SETTINGS" />  

但在配置文件中添加此权限之后会报错,无法再eclipse里面正常编译,怎么办? 
1、方法一:将项目放到Android源码中编译; 
2、方法二:网上有人说clean一下,果然有效果; 

正常编译之后安装,添加权限了也报错,无法正常运行。 
研究之后发现还需要System共享权限,就是: 
Java代码  
  1. android:sharedUserId="android.uid.system"  


要用这个共享是有要求的: 
1、用系统签名; 
2、安装到System/app目录下; 

这样看来,普通应用程序是没办法在正常方式下操作GPS开关的,这也符合Android设计时的安全考虑。如果需要在定制APP中操作开关,有2个方法: 
1、修改系统,提供给APP操作接口; 
2、按上面流程操作; 

下面贴一下GPS操作的方法: 

Java代码  
  1.     public static boolean getGpsState(Context context) {  
  2.         ContentResolver resolver = context.getContentResolver();  
  3.         return Settings.Secure.isLocationProviderEnabled(resolver,LocationManager.GPS_PROVIDER);  
  4.     }  
  5.       
  6.     public static void toggleGps(Context context) {  
  7.         ContentResolver resolver = context.getContentResolver();  
  8.         boolean enabled = getGpsState(context);  
  9.         Settings.Secure.setLocationProviderEnabled(resolver,LocationManager.GPS_PROVIDER, !enabled);  ----开关设置
  10.     }  
  11.   
  12.     public static boolean getGpsState(Context context) {  
  13.         LocationManager locMgr = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);  
  14.         return locMgr.isProviderEnabled(LocationManager.GPS_PROVIDER);  
  15.     }  
  16.       
  17.     public static void toggleGps(Context context) {  
  18.         ContentResolver resolver = context.getContentResolver();  
  19.         boolean enabled = getGpsState(context);  
  20. //      Settings.Secure.putInt(resolver, LocationManager.GPS_PROVIDER, enabled?0:1);  
  21.         String value = LocationManager.PROVIDERS_CHANGED_ACTION;  
  22.         if (enabled) {  
  23.             value = "-" + LocationManager.GPS_PROVIDER;  
  24.         } else {  
  25.             value = "+" + LocationManager.GPS_PROVIDER;  
  26.         }  
  27.         Settings.Secure.putString(resolver, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, value);  
  28.     }  

更多相关文章

  1. android 实现listview动态加载列表项
  2. 调用onSaveInstanceState(Bundle)保存数据的注意事项
  3. Android(安卓)IntentService源码分析
  4. Android拾萃 - RxJava2之创建操作符及其demo
  5. Adapter 要从源头开始适配
  6. Android读写XML(中)
  7. Android(安卓)CountDownTimer 倒计时器的简单使用
  8. Android(安卓)2.2 SDK操作系统界面截屏抢先看
  9. Android获取其他包的Context实例,然后调用它的方法

随机推荐

  1. GIT和repo使用方法:下载内核 android源码
  2. 由一份 log 看 Binder
  3. Android(安卓)CoordinatorLayout使用
  4. ImageView中显示网络图片,图片变模糊?
  5. 自定义开关
  6. Error generating final archive: java.i
  7. 关于android:targetSdkVersion
  8. ReactNative 中 android按两次返回键退出
  9. ListView的Item中CheckBox焦点优先于List
  10. Android(安卓)Studio上报错java.net.Unkn