Android 如何打开和关闭GPS
这个问题已经被问了很多次,我发现了很多结果,但没有一个真的对我有帮助 使用以下代码打开GPSAndroid 如何打开和关闭GPS,android,gps,geolocation,Android,Gps,Geolocation,这个问题已经被问了很多次,我发现了很多结果,但没有一个真的对我有帮助 使用以下代码打开GPS String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED); Log.i("GPS IS ON", "GPS IS ON"+provider.contains("gps")); if(!provider.contains(
String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
Log.i("GPS IS ON", "GPS IS ON"+provider.contains("gps"));
if(!provider.contains("gps")){ //if gps is disabled
Log.i("GPS IS ON", "GPS IS ON");
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"));
sendBroadcast(poke);
}
并关闭:
String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if(provider.contains("gps")){ //if gps is enabled
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"));
sendBroadcast(poke);
}
我在两次不同的点击中调用这两种不同的方法。它应该自动打开设备上的GPS,但它不工作 我甚至添加了以下权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
}
我已经使用了这段代码,但如果没有互联网,它似乎无法在GPS关闭的情况下工作。我认为用户无法从任何应用程序更改用户的个人电话设置(如GPS打开-关闭、声音打开-关闭、显示等)。这将是安全之眼 在我看来,这里唯一的选择是检查GPS是否打开或关闭,并将用户重定向到设置屏幕
LocationManager manager = (LocationManager) getSystemService( Context.LOCATION_SERVICE );
if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
showPopupToRedirectToSettings();
}
通过使用以下意图,您可以启动设置屏幕:
注意:如果您同时使用网络\u提供商和GPS\u提供商,则只需要请求访问\u精细\u位置权限,因为它包括两个提供商的权限。(访问位置的权限仅包括对网络提供商的权限。)反对投票的原因是什么?“它应该自动打开设备上的GPS,但它不工作”——这一特定的安全漏洞多年前就已修补。“我甚至添加了这些权限”--它们与启用和禁用GPS无关。“那么,还有什么办法呢?”——希望没有。出于隐私原因,用户(而非应用程序)控制是否启用GPS。@Commonware谢谢,我正在尝试使用latitude和logititude获取用户(城市)的当前位置。我将如何获得这些值?我也需要互联网许可吗?“我将如何获取值?”--使用
LocationManager
和requestLocationUpdates()
。“我也需要互联网许可吗?”--你不应该。“似乎如果互联网不在那里,它在GPS关闭的情况下无法工作”--对不起,在我之前的评论中,我假设你正在寻找GPS。如果GPS被禁用,并且您正在使用网络提供商,则设备可能需要访问互联网才能找到位置。我不知道你是否需要互联网
许可才能工作——我所有与地点相关的工作都是基于其他原因需要互联网
许可的应用程序,因此我没有在没有它的情况下尝试过地点访问。“访问地点的许可只包括对网络提供商的许可”至少有几年没有这样了。如果您只持有ACCESS\u Rough\u LOCATION
,尝试从GPS获取数据将导致数据“模糊”,因此其精度仅与城市街区相当。
LocationManager manager = (LocationManager) getSystemService( Context.LOCATION_SERVICE );
if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
showPopupToRedirectToSettings();
}
startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));