Что мне нужно сделать после рутирования и запроса прав суперпользователя, чтобы включить / отключить GPS в моем приложении?
3 ответа
Вы не должны защищать конфиденциальность пользователя. Однако это возможно, воспользовавшись ошибкой. Посмотрите, как:
Как программно включить или отключить GPS на Android?
Обратите внимание, что это может работать не на всех версиях Android - см.
https://android.googlesource.com/platform/packages/appsource.com/platform/packages/appsource Настройки / + / 4b21f7cd9424eeb83838071a4419912ee5d5e41d
Где они указывают, что это было исправлено, но я не уверен, в каких версиях есть исправление (если есть).
ON Rooted Device попробуйте это просто используйте su для включения gps в режиме высокой точности
Process proc=Runtime.getRuntime().exec(new String[]{"su",
"pm grant com.your_app_packagename android.permission.WRITE_SECURE_SETTINGS",
"settings put secure location_providers_allowed gps,network,wifi"});
proc.waitFor();
Запустите эту команду в фоновом потоке :)
Далее вы можете обратиться к этой ссылке здесь
Этот код работает на телефонах ROOTED , если приложение перемещено на /system/aps
, и у них есть следующие разрешения в манифесте :
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
Код
private void turnGpsOn (Context context) {
beforeEnable = Settings.Secure.getString (context.getContentResolver(),
Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
String newSet = String.format ("%s,%s",
beforeEnable,
LocationManager.GPS_PROVIDER);
try {
Settings.Secure.putString (context.getContentResolver(),
Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
newSet);
} catch(Exception e) {}
}
private void turnGpsOff (Context context) {
if (null == beforeEnable) {
String str = Settings.Secure.getString (context.getContentResolver(),
Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if (null == str) {
str = "";
} else {
String[] list = str.split (",");
str = "";
int j = 0;
for (int i = 0; i < list.length; i++) {
if (!list[i].equals (LocationManager.GPS_PROVIDER)) {
if (j > 0) {
str += ",";
}
str += list[i];
j++;
}
}
beforeEnable = str;
}
}
try {
Settings.Secure.putString (context.getContentResolver(),
Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
beforeEnable);
} catch(Exception e) {}
}
Похожие вопросы
Связанные вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.