为什么我们需要设置开启/关闭GPS,另一方面我们可以通过编程方式打开/关闭WIFI和蓝牙而无需移动到设置。 Android指南已更改为4.0以上版本。对于4.0以上的版本,您无法以编程方式更改GPS。
答案 0 :(得分:5)
曾经有一种通过发送android.location.GPS_ENABLED_CHANGE
广播以编程方式启用/禁用GPS的方法:
Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
intent.putExtra("enabled", enabled);
sendBroadcast(intent);
其中enabled
分别为true
或false
。
如果你看看this bug report,这个黑客在Android 4.4中被颠覆了。它仍适用于较旧的OS版本。
现在回答你的问题
另一方面,我们为什么需要设置开启/关闭GPS 以编程方式打开/关闭WIFI和蓝牙而不转移到设置?
即使没有第三方应用实际使用GPS功能,Android的GPS技术也会定期向Google发送位置数据。 许多人对实时位置监控等事情非常敏感。这就是为什么Google在使用GPS功能之前必须获得用户的同意。每当用户打开GPS时,都会看到以下对话框:
因此不再可能以编程方式更改GPS设置,因为它必须获得用户的许可。程序员可以做的是通过调用
将用户引导至GPS设置startActivity(context, new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
让用户做出选择。
有趣一点,如果您尝试在新操作系统版本上发送GPS_ENABLED_CHANGE
广播,那么您将获得
java.lang.SecurityException: Permission Denial:
not allowed to send broadcast android.location.GPS_ENABLED_CHANGE
错误。正如您所看到的那样,SecurityException
带有权限拒绝消息。
答案 1 :(得分:4)
你的问题的前提不再正确。使用Google Play Services 7,您可以显示一个对话框,以便在您的应用中更改位置提供商设置。跳至this video中的1:10。