Вы можете использовать эту пользовательскую библиотеку (написанную с помощью 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)
});
В моем случае я не думаю, что можно отключить устройство так, как хотелось бы.
Ближе всего, что мне удалось добраться до моей цели, было использование:
Intent i = new Intent("android.intent.action.ACTION_REQUEST_SHUTDOWN");
i.putExtra("android.intent.extra.KEY_CONFIRM", true);
startActivity(i);
Появится диалоговое окно для выключения устройства. Это идеальное решение, но в моем случае его использование приводит к сбою устройства. Возможно, мое устройство несколько особенное, и другие устройства не будут иметь этих ограничений.
В любом случае, я надеюсь, что мое тестирование поможет другим в их поисках.
Runtime.getRuntime().exec(new String[]{ "su", "-c", "reboot -p" });
работает, только с укорененными устройствами !!
Чтобы использовать этот код, вам нужен Суперпользователь! Работает с 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" />
Он работает для меня на корневом устройстве. Если ваше устройство укоренилось, вы можете использовать подход
Shutdown:
try {
Process proc = Runtime.getRuntime()
.exec(new String[]{ "su", "-c", "reboot -p" });
proc.waitFor();
} catch (Exception ex) {
ex.printStackTrace();
}
Restart:
Тот же код, просто используйте "reboot"
вместо "reboot -p"
.