Выключение устройства Android в качестве системного приложения [дубликат]

Вы можете использовать эту пользовательскую библиотеку (написанную с помощью Promise) для выполнения удаленного вызова.

function $http(apiConfig) {
    return new Promise(function (resolve, reject) {
        var client = new XMLHttpRequest();
        client.open(apiConfig.method, apiConfig.url);
        client.send();
        client.onload = function () {
            if (this.status >= 200 && this.status < 300) {
                // Performs the function "resolve" when this.status is equal to 2xx.
                // Your logic here.
                resolve(this.response);
            }
            else {
                // Performs the function "reject" when this.status is different than 2xx.
                reject(this.statusText);
            }
        };
        client.onerror = function () {
            reject(this.statusText);
        };
    });
}

Пример простого использования:

$http({
    method: 'get',
    url: 'google.com'
}).then(function(response) {
    console.log(response);
}, function(error) {
    console.log(error)
});
21
задан Knossos 11 July 2014 в 15:32
поделиться

4 ответа

В моем случае я не думаю, что можно отключить устройство так, как хотелось бы.

Ближе всего, что мне удалось добраться до моей цели, было использование:

Intent i = new Intent("android.intent.action.ACTION_REQUEST_SHUTDOWN");
i.putExtra("android.intent.extra.KEY_CONFIRM", true);
startActivity(i);

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

В любом случае, я надеюсь, что мое тестирование поможет другим в их поисках.

15
ответ дан Knossos 3 September 2018 в 16:03
поделиться
Runtime.getRuntime().exec(new String[]{ "su", "-c", "reboot -p" });

работает, только с укорененными устройствами !!

5
ответ дан Halvor Strand 3 September 2018 в 16:03
поделиться

Чтобы использовать этот код, вам нужен Суперпользователь! Работает с 4.0 и выше!

  Intent i = new Intent("android.intent.action.ACTION_REQUEST_SHUTDOWN");
            i.putExtra("android.intent.extra.KEY_CONFIRM", false);
            i.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(i);

и помещает это разрешение в манифест:

<uses-permission android:name="android.permission.SHUTDOWN" /> 
5
ответ дан Rodrigo Gontijo 3 September 2018 в 16:03
поделиться

Он работает для меня на корневом устройстве. Если ваше устройство укоренилось, вы можете использовать подход

Shutdown:

try {
    Process proc = Runtime.getRuntime()
                    .exec(new String[]{ "su", "-c", "reboot -p" });
    proc.waitFor();
} catch (Exception ex) {
    ex.printStackTrace();
}

Restart:

Тот же код, просто используйте "reboot" вместо "reboot -p".

5
ответ дан Yogesh Rathi 3 September 2018 в 16:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: