2013-05-30 97 views
0

我們都知道Android上的GPS問題。如何以編程方式啓用和禁用NETWORK_PROVIDER

我們如何爲NETWORK_PROVIDER創建相同的turnOnGps函數波紋管,我想打開Both。

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

幸運的是,上面引用的script-kiddie技術在現代Android版本上無效。您無法自行啓用或禁用任何位置服務提供商,因爲隱瞞明顯的隱私原因。請允許用戶通過操作系統提供的機制(設置,電源控制應用小部件等)啓用或禁用位置提供程序。

1

只需添加到CommonsWare提到的內容,該方法僅適用於2.2及更低版本的Android版本。

但是,您可以使用,操作簡單,下面的代碼:

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

這會直接將用戶帶到屏幕上,他們可以啓用基於/禁用位置的選項。

參考here (docs),進行更多設置

希望這有助於

+0

感謝您的幫助。但我想在代碼中做到這一點,沒有用戶。任何其他想法? –

+0

對不起,但這是唯一的方法,據我所知,你提供的代碼只是一個小故障 - 這是'PowerManager'中的一個錯誤,但是固定在2.3+之上,就像CommonsWare說:「你不能自己啓用或禁用任何位置服務提供商,因爲隱瞞明顯的隱私原因。」這將需要用戶進行交互,因爲用戶選擇啓用或不啓用GPS。 – user959631

相關問題