Red de conocimiento informático - Conocimiento informático - ¿Cómo hacer que las aplicaciones de Android sólo se inicien después del restablecimiento de fábrica?

¿Cómo hacer que las aplicaciones de Android sólo se inicien después del restablecimiento de fábrica?

Hay algunas aplicaciones de inicio automático que solo deben iniciarse después de un restablecimiento de fábrica y no es necesario iniciarlas en otros momentos.

La discusión se divide en dos partes. Primero, cómo hacer que la aplicación se inicie sola. En segundo lugar, cómo hacer que la aplicación se inicie sólo después del restablecimiento de fábrica. El método es el siguiente:

1. Deje que el programa se inicie solo.

Primero, simplemente escuche una transmisión de arranque. Primero escriba un Receptor y herede BroadcastReceiver.

La clase pública OOBEBroadcastReceiver extiende BroadcastReceiver {

Cadena final estática privada ACTION _ BOOT _ COMPLETED = " Android . intent . ACTION . BOOT _ COMPLETED "

public; ruta del archivo de cadena estática final = "/data/data/com . Android . oobe/files/output mode _ set "

Valores del modo predeterminado de cadena estática pública = " 1 1 0 0 1 0 1 " " \ n ";

Excepción extendida MyException de clase protegida {

MyException protegida(mensaje de cadena){

Super(MSG);

}

}

@override

public void onReceive(contexto, intención intención){

if(ACTION _ BOOT _ complete . equals(intent . getaction()))

{/*Haz lo que quieras, como habilitar una actividad, un servicio, etc. */}

}

}

De hecho, solo necesitamos registrar este receptor en el archivo de configuración de la aplicación AndroidManifest.xml para monitorear el evento de inicio del sistema. :

ltuses-permission Android:name="Android.permission.receive_BOOT_COMPLETED"/gt;

ltReceiver android:name=".OOBEBroadcastReceiver" gt

ltIntent -filter> ltaction Android: nombre = " Android . intent . action . boot _ COMPLETED "/>

lt/intent-filter gt;

lt/receiver gt;

2. Deje que el programa se reinicie solo después del restablecimiento de fábrica.

En el sistema Android existe un área de datos que es exclusiva de los usuarios. Puede crear un archivo en el área de datos y escribir datos. Luego, al juzgar si el archivo existe y si los datos son correctos cuando existen, se puede realizar el procesamiento correspondiente.

I. Si el archivo existe y si los datos coinciden:

OnReceive() en OOBEBroadcastReceiver se puede procesar después de recibir el mensaje.

Puede agregar aquí:

Pruebe

{

int count, I = 0;

char[]buf = new char [ 100];

FileReader rd = new FileReader(ruta del archivo); //Crear objeto rd

count = rd.read(buf, 0, 99); leer en la lista de caracteres buf.

buf[count]= '\n';

String currentModeValues ​​​​= new String(buf, 0, count); //Asigna los caracteres de la lista de caracteres al Objeto de clase de cadena.

if((currentmodevalues ​​​​. compare to(defaultModeValues))== 0)

Lanzar nueva MyException("Valor predeterminado detectado, salir");

}

catch(FileNotFoundException e 1)

{/*El archivo no existe, lo que demuestra que el usuario no ha creado un archivo en el área de datos y puede iniciar la aplicación. . Este ejemplo es para iniciar una actividad: OOBE */

Intent starter Intent = new Intent(context,oobe.class);

starterIntent.addFlags(Intent.flags_activity_new_ task); /p>

contexto . iniciar actividad (intención inicial);

}

Capturar (excepción e2)

{

Log.e("Receiver: Exception", E2 . tostring()); //Se han escrito los caracteres de condición y se puede realizar un procesamiento más complejo. No es necesario en este caso.

};

Después de que se ejecute la aplicación, configure la bandera. En la actividad OOBE, al final, escriba una cadena en el archivo para establecer el indicador de que la operación ha finalizado.

byte[] setflag = nuevo byte[20];

valores de setflag de cadena = " 1 1 0 0 1 0 1 " " \ n "

establecer bandera = establecer valores de bandera. getbytes();

fos = terminar esto openfile salida(" salida MODE _ set ", MODE _ WORLD _ READABLE); setflagValues ​​​​al archivo outputmode_set.

fos . write(set flag);

De esta manera, cuando el receptor determina si el archivo existe y si la cadena coincide, puede realizar un procesamiento diferente.

Observaciones:

Acerca del método openFileOutput():

El primer parámetro se utiliza para especificar el nombre del archivo y no puede contener el separador de ruta "/". Si el archivo no existe, Android lo creará automáticamente. El archivo creado se guarda en /data/data/

El segundo parámetro se utiliza para especificar el modo de operación. Hay cuatro modos, a saber:

Contexto. MODE_PRIVATE: Es el modo de funcionamiento predeterminado, lo que significa que el archivo son datos privados y solo la propia aplicación puede acceder a ellos. En este modo, lo que se escriba sobrescribirá el archivo original.

Contexto.

MODE_APPEND: el modo verifica si el archivo existe y, si existe, agrega el contenido al archivo; de lo contrario, se crea un nuevo archivo.

MODE_WORLD_READABLE: Indica que el archivo actual puede ser leído por otras aplicaciones;

Modo_world_writable: Indica que el archivo actual puede ser escrito por otras aplicaciones.

Reimprimir