2013-04-28 72 views
2

如何在关闭时获取当前位置 我测试两种方法如何启用GPS的Android

private void turnGPSOn(){ 
    String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED); 

    if(!provider.contains("gps")){ //if gps is disabled 
     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); 
    } 
} 

private void turnGPSOff(){ 
    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); 
    } 
} 

打开Android上的全球定位系统和这种方法

enaABLE GPS: 
Intent intent=new Intent("android.location.GPS_ENABLED_CHANGE"); 
intent.putExtra("enabled", true); 
sendBroadcast(intent); 
DISABLE GPS: 

Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE"); 
intent.putExtra("enabled", false); 
sendBroadcast(intent); 

但在打开时通过这些方法之一的GPS是执行代码恢复位置,它显示

Toast.makeText(LbsGeocodingActivity.this, 
      "Provider disabled by the user. GPS turned off", 
      Toast.LENGTH_LONG).show(); 
+1

你怎么称呼这个方法?这是不好的做法,以启用GPS的代码,它不能确保GPS将启用,这个我破解技巧 – 2013-04-28 12:41:03

回答

10

您无法为用户启用GPS,您可以做的是,如果禁用了GPS,请提示用户发送消息,要求他启用GPS并将其发送至设置以启用该功能。

使用此代码:

Intent gpsOptionsIntent = new Intent( 
    android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
startActivity(gpsOptionsIntent); 

这是如何做到这一点

http://java-blog.kbsbng.com/2012/08/displaying-dialog-in-android-to-prompt.html

为了得到位置,你这样做

更详细的代码

在yourLocationListener,你实现当你的位置

+0

,但我想每分钟在后台检索当前位置,并且这是不可能的请求激活每次GPS!并且不可能使GPS始终处于活动状态,它会消耗大量的负载! – user2292866 2013-04-28 12:50:14

+0

如果用户没有启用它,则不需要启用它,只需执行一次。我编辑了我的答案,告诉你如何获得每分钟的位置 – 2013-04-28 12:57:47

+0

@Dany Y如果位置已经打开,每当有位置打开或关闭时,我都表示该显示。 – Abhishek 2016-04-19 05:03:59

0

这是不合格的,从代码启用GPS怎么做。你不能这样做。

曾经有一个漏洞允许GPS通过没有特殊权限的应用程序开启。这种利用不再存在于2.3(在大多数ROM中)。

1

我在Android 6.0.1上,我刚刚注意到Google地图要求我启用GPS,当我说好的时候,它会自动启用GPS,并且不会将我带到设置页面。

那么,这是现在支持?如果是,请链接开发人员的代码。

+0

根据我的知识只允许系统应用程序(这些cmay具有系统权限WRITE_SECURE_SETTINGS)。永远不会尝试,但在这种情况下,你应该能够用这个symple行来做到这一点:android.provider.Settings.Secure.putInt(context.getContentResolver(),android.provider.Settings.Secure.LOCATION_MODE,android.provider.Settings。 Secure.LOCATION_MODE_HIGH_ACCURACY); – ARLabs 2016-09-15 15:47:23

+0

对不起,我没有看看GoogleMaps而回答,实际上它不会更改设置,但它会提示您这样做。我也对此感兴趣......我认为你可以在这里找到答案:https://developer.android.com/training/location/change-location-settings.html – ARLabs 2016-09-15 15:57:43