Как я могу получить ужасное разрешение WRITE_SECURE_SETTINGS для моего приложения для Android? - PullRequest
8 голосов
/ 17 февраля 2011

Мне нужно иметь возможность включать и выключать GPS-приемник, а WRITE_SECURE_SETTINGS необходим для доступа к безопасным настройкам.Я довольно долго искал, и в каждом ответе, который я видел, говорилось, что ни одно приложение вне системы / прошивки не может получить такое разрешение.

Однако это просто не соответствует действительности.На рынке есть несколько приложений, которые делают именно то, что я пытаюсь (в отношении GPS), но есть еще несколько, которые имеют разрешения WRITE_SECURE_SETTINGS.Например:

Расширенные элементы управления

SwitchPro

Профиль потока

Итак, как это можно сделать?

Ответы [ 3 ]

23 голосов
/ 17 февраля 2011

Мне нужно иметь возможность включать и выключать приемник GPS

По соображениям конфиденциальности, если ничего больше, включение или отключение любого вида отслеживания местоположения должно осуществляться исключительно в руках пользователя через доверенные приложения, а не по запросу произвольных третьих сторон.

Итак, если вы хотите включить и отключить GPS, создайте свою собственную прошивку, которая делает то, что вам нужно, и загрузите эту прошивку на любые устройства, которые вы хотите. Или внесите свои изменения в существующие моды прошивки (например, Cyanogen).

WRITE_SECURE_SETTINGS требуется для доступа к безопасным настройкам

Правильно.

Я довольно долго искал, и в каждом ответе, который я видел, говорилось, что ни одно приложение вне системы / прошивки не может получить такое разрешение.

Correct.

Однако это просто неправда.

Нет, это правда.

На рынке есть несколько приложений, которые делают именно то, что я пытаюсь (в отношении GPS)

Они нашли лазейку в безопасности. Я приму меры, чтобы эта дыра была исправлена.

но есть еще куча, у которых есть разрешения WRITE_SECURE_SETTINGS

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

16 голосов
/ 07 января 2015

Попробуйте эту команду adb, это даст разрешение во время выполнения приложения

adb shell pm grant package android.permission.WRITE_SECURE_SETTINGS

Выполните следующие действия:

  1. Подключите устройство (убедитесь, что отладка по USB включена)

  2. Выполнить вышеуказанную команду ADB

  3. Установить apk

Это сработало для меня ...

1 голос
/ 23 июля 2012

Только это. Вы можете получить доступ к виджету, который есть у каждого мобильного телефона.

public void ativaGPS() {
        LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
        if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
            Intent intent = new Intent();
            intent.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
            intent.addCategory(Intent.CATEGORY_ALTERNATIVE);
            intent.setData(Uri.parse("3"));
            sendBroadcast(intent);
        }
...