Lo scopo poi e' quello di avviare in automatico una applicazione una volta terminato il boot
Frugando ho trovato che questa opzione e' facilmente disponibile nei Nexus con semplici comandi da fastboot
./adb reboot bootloader
./fastboot oem off-mode-charge 0
./fastboot reboot
A questo punto per rimuovere il lock screen di Android si va in Impostazioni/Sicurezza/Blocco schermo/nessuno
A questo punto sarebbe interessante avviare in automatico un app (od un servizio)
Per fare una prova ho usato Nexus 5 con Android 6 perche' le versioni piu' recenti
di Android rendono piu' difficile lanciare una app al boot in automatico
Si vede modificare il Manifest (righe evidenziate in giallo)
AndroidManifest.xml
============================================
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.luca.innocenti.autoboot"> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".BootReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.QUICKBOOT_POWERON" /> </intent-filter> </receiver> </application> </manifest>
============================================
(per vedere se il codice funziona si osservi logcat, non ci sono messaggi per l'utente)
MainActivity.kt
============================================
package com.luca.innocenti.autoboot import android.content.BroadcastReceiverimport android.content.Contextimport android.content.Intentimport android.content.Intent.ACTION_BOOT_COMPLETED import androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport android.util.Log class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } } class BootReceiver : BroadcastReceiver() { override fun onReceive(c: Context, intent: Intent?) { val action = intent?.action Log.d("ASD123123", "RECEIVED BOOT") val b = intent?.toUri(Intent.URI_INTENT_SCHEME) when (action) { ACTION_BOOT_COMPLETED -> startWork(c) } } private fun startWork(context: Context) { Log.d("Test", "Test") } }