2013-05-30 2 views
0

우리 모두 Android의 GPS 문제에 대해 알고 있습니다.프로그래밍 방식으로 NETWORK_PROVIDER을 활성화하거나 비활성화 할 수 있습니다

우리는 같은 turnOnGps 기능을 어떻게 만들지 만 NETWORK_PROVIDER에 벨로우입니다. 둘 다 켜기를 원합니다.

private void turnGPSOn(){ 

String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED); 
if(!provider.contains("gps")){  
    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); 
} }  

답변

0

다행히도 위에 언급 한 스크립트 키디 기술은 최신 Android 버전에서는 작동하지 않습니다. 눈에 잘 띄는 개인 정보 보호를 위해 위치 공급자를 직접 활성화하거나 비활성화 할 수 없습니다. 사용자가 OS 제공 메커니즘 (Settings, Power Control app widget 등)을 통해 위치 공급자를 활성화 또는 비활성화 할 수있게하십시오.

1

언급 한 CommonsWare에 추가하면이 방법은 Android 2.2 이하 버전에서만 작동합니다. 이것은 그들이/비활성화 위치 기반 옵션을 사용할 수 있습니다 화면에 직접 사용자를 취할 것

startActivity(new Intent("android.settings.LOCATION_SOURCE_SETTINGS")); 

:

그러나, 아래의 간단한 코드를 사용할 수 있습니다.

자세한 설정이 도움말에 대한

+0

감사를하는 데 도움이

희망을 위해, here (docs)을 참조하십시오. 하지만 코드없이 사용자없이이 작업을 수행하려고합니다. 다른 아이디어? –

+0

죄송합니다.하지만 그 방법은 단 한 가지입니다. 제공하신 코드는 약간의 해킹 일 뿐이며, 이는 PowerManager의 버그 였지만, 2.3 이상에서 수정되었습니다. CommonsWare는 "눈에 띄게 개인 정보 보호를 위해 위치 공급자를 직접 활성화하거나 비활성화 할 수 없습니다." GPS를 사용하도록 설정했는지 여부는 사용자의 선택이므로 사용자 상호 작용이 필요합니다. – user959631

관련 문제