Ошибка разрешения системного приложения Android DEVICE_POWER - PullRequest
3 голосов
/ 22 сентября 2011

Я пытаюсь использовать метод goToSleep(), чтобы перевести телефон в глубокий сон. Программа была установлена ​​в каталог / system / app, поэтому Android System Info сообщает, что это системное приложение, но если я попробую вызвать goToSleep (), я получу эту ошибку

Ни у пользователя 10085, ни у текущего процесса нет android.permission.DEVICE_POWER.

Выборка кода:

            IPowerManager mPowerManager = IPowerManager.Stub.asInterface(ServiceManager.getService("power"));

            long time = SystemClock.uptimeMillis() + 1000;
            try {
                mPowerManager.goToSleep(time);
            } catch (RemoteException e) {
                 Toast.makeText(getApplicationContext(), "error: " + e.toString(), Toast.LENGTH_LONG).show();
                e.printStackTrace();
            }

AndroidManifest.xml

<permission android:name="android.permission.DEVICE_POWER"/> 
<uses-permission android:name="android.permission.DEVICE_POWER" />
<permission android:name="android.permission.REBOOT"/>
<uses-permission android:name="android.permission.REBOOT"/>

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

То, что я пытаюсь сделать, чтобы приложение запускалось как системное приложение:

  1. скопировать файл в / system / app
  2. чоун 0: 0
  3. chmod 4755
  4. chmod ugo + s

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

Ответы [ 3 ]

2 голосов
/ 21 февраля 2015

просматривая исходные коды, я вижу, что вам нужно signature permission, я думаю, что недостаточно быть системным приложением, вы должны быть подписаны тем же сертификатом, что и в /system/framework/android/framework-res.apk

2 голосов
/ 01 марта 2016

Разрешение DEVICE_POWER недоступно сторонним приложениям, таким как ваше.

публичная статическая финальная строка DEVICE_POWER Добавлено в уровень API 1

Предоставляет низкоуровневый доступ к управлению питанием.

Не для использования сторонними приложениями. Постоянное значение: "android.permission.DEVICE_POWER"

0 голосов
/ 22 сентября 2011

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

...