本帖最后由 wangwenxin6868 于 2010-12-22 10:51 编辑 查看了Settings源代码,发现其开启关闭GPS的代码如下: /** * Gets the state of GPS location. * * @param context * @return true if enabled. */ private static boolean getGpsState(Context context) { ContentResolver resolver = context.getContentResolver(); boolean open = Settings.Secure.isLocationProviderEnabled(resolver, LocationManager.GPS_PROVIDER); System.out.println("getGpsState:"+open); return open; } /** * Toggles the state of GPS. * * @param context */ private void toggleGps(Context context) { ContentResolver resolver = context.getContentResolver(); boolean enabled = getGpsState(context); Settings.Secure.setLocationProviderEnabled(resolver, LocationManager.GPS_PROVIDER, !enabled); } 以上代码在Eclisp有错误,在Linux下编译,可以通过,安装APK后运行,有需要如下权限的提示: <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> 即使在AndroidManifest.xml中声明了权限,也还是有这个错误提示。 解决方法: 在 AndroidManifest.xml中添加系统权限: android:sharedUserId="android.uid.system" 例如: <manifest xmlns:android="http://schemas./apk/res/android" android:sharedUserId="android.uid.system" > 在Linux下编译,就可以了 |
|