Включить GPS и сетевое местоположение программно на рутированном телефоне? - PullRequest
1 голос
/ 04 мая 2010

Я хотел бы написать простой виджет, который включает и выключает GPS и местоположение в сети. Я читал, что это невозможно сделать нормально, но, вероятно, на рутованном телефоне это должно быть выполнимо. Кто-нибудь знает, какой будет код? (Мне нужен только код для переключения поставщиков местоположения, я знаю, как создать виджет.) Неважно, что это не «хорошее» решение, я не планирую распространять виджет. Если это имеет значение, это будет на HTC Hero, все еще работающем с v1.5.

Ответы [ 3 ]

1 голос
/ 04 мая 2010

Я подозреваю, что вы ищете LOCATION_PROVIDERS_ALLOWED в android.provider.System.Secure. Однако я не уверен, что root-доступ будет достаточным для того, чтобы вы могли вызывать его из приложения SDK. Соответствующие методы для изменения этого параметра могут быть защищены путем проверки цифровой подписи приложения SDK. AFAIK, для этого потребуется, чтобы вы создали и подписали собственную прошивку, а затем подписали приложение SDK для соответствия.

Вы также можете выяснить, что происходит в системе при настройке этого параметра, и посмотреть, есть ли способ повлиять на это изменение, с помощью приложения SDK на корневом устройстве, не проходя через Secure контент-провайдер.

0 голосов
/ 30 декабря 2016
public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);



    String[] cmds = {"cd /system/bin" ,"settings put secure location_providers_allowed +gps"};
    try {
        Process p = Runtime.getRuntime().exec("su");
        DataOutputStream os = new DataOutputStream(p.getOutputStream());
        for (String tmpCmd : cmds) {
            os.writeBytes(tmpCmd + "\n");
        }
        os.writeBytes("exit\n");
        os.flush();
    }
    catch (IOException e){
        e.printStackTrace();
    }

}
}
0 голосов
/ 19 декабря 2014
String provider = Settings.Secure.getString(context.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")); 
        context.sendBroadcast(poke);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...