так я тут покапался чуток
uses
FMX.Helpers.Android,
AndroidApi.Helpers,
AndroidApi.JNI.JavaTypes,
AndroidApi.JNIBridge,
AndroidApi.JNI.GraphicsContentViewText,
Android.os.PowerManager;
function HasPermission(const Permission: string): Boolean;
begin
Result := TAndroidHelper.Context.checkSelfPermission(StringToJString(Permission))
= TJPackageManager.JavaClass.PERMISSION_GRANTED;
end;
var
PowerObj: JObject;
PowerManager: JPowerManager;
begin
if HasPermission('android.permission.WAKE_LOCK') then // доступ есть
begin
if HasPermission('android.permission.REBOOT') then // доступа НЕТ
begin
PowerObj := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.POWER_SERVICE);
PowerManager := TJPowerManager.Wrap((PowerObj as ILocalObject).GetObjectID);
PowerManager.reboot(nil);
end else
Log.d('android.permission.REBOOT == DENIED');
end
else
Log.d('android.permission.WAKE_LOCK == DENIED');
если убираем проверку разрешения REBOOT
https://developer.android.com/reference/android/Manifest.permission.html#REBOOT
этот способ только для системы, извне его не вызвать.
Есть еще два способа
1) через SuperUser (Только этот способ остается)
2) через Intent (отменяется)