Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Android - permissão de reboot não funciona

Olá, estou desenvolvendo uma POC onde preciso fazer o reboot do aparelho em determinado momento, e para isso preciso da respectiva permissão. Já adicionei a permissão no Manifest, fiz a lógica para validar se foi concedida e implementei um botão para pedir a permissão mas ela simplesmente não aparece.

Segue o código da minha aplicação:

    <uses-permission android:name="android.permission.REBOOT" tools:ignore="ProtectedPermissions" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

AndroidManifest.xml

    private fun isRebootPermissionGranted(): Boolean{
        return ContextCompat.checkSelfPermission(
            this,
            android.Manifest.permission.REBOOT
        ) == PackageManager.PERMISSION_GRANTED
    }

    private fun requestPermission() {
        if(!isRebootPermissionGranted()){
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
                requestPermissions(arrayOf(android.Manifest.permission.REBOOT), requestCode)
        }
    }

    ...

    val button = findViewById<Button>(R.id.btn_reboot)

    button.setOnClickListener {
        requestPermission()
    }

MainActivity.kt

    <Button
        android:id="@+id/btn_reboot"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Reboot Permission"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

activity_main.xml

Acredito que o problema é essa permissão em especifico, pois tentei com a permissão de CALL_PHONE e funcionou normalmente , entretanto já verifiquei a documentação do Android e parece que devia funcionar.

https://developer.android.com/reference/android/Manifest.permission#REBOOT

Desde já agradeço pela ajuda.

1 resposta
solução!

Oi Luiza, tudo bem ?

Dá uma olhadinha na documentação, acredito que você não possa fazer isso :(

https://developer.android.com/reference/android/Manifest.permission#REBOOT

Not for use by third-party applications.