Come funziona tecnicamente il congelamento di un'app?


22

App come Link2SD e Titanium Backup sono in grado di "congelare" altre app, ovvero disabilitarle senza rimuoverle. Cosa fanno queste app per raggiungere questo obiettivo?

Risposte:


28

Titanium Backup ecc. Basta usare la funzione integrata Package Manager (pm)per bloccare un'app. pmha una funzione per impedire l'esecuzione e la visualizzazione delle app in Avvio applicazioni. Per usarlo, Titanium Backup ecc. Eseguire il comando seguente:

pm disable {nome_pacchetto}

Puoi congelare le app da solo senza utilizzare un'app dedicata per il congelatore. Basta usare il comando sopra in Terminal Emulator o ADB Shell.

Ad esempio, se vuoi congelare Stock Web Browser, apri Terminal Emulatore passa al root usando il sucomando. Quindi, esegui # pm disable com.android.browser.
Tornerà #Package com.android.browser new state: disabled. Fatto!
Riavvia il tuo Launcher (alcuni dispositivi potrebbero richiedere il riavvio) per vedere l'icona dell'app scomparsa.

Per scongelare l'app, basta sostituirla disablecon enablenel comando.


È lo stesso dei comandi kill -STOP, kill -CONT descritti qui? linuxpoison.blogspot.com/2007/11/…
NoBugs

@NoBugs Riavvia il dispositivo. Alcuni dispositivi ne hanno bisogno per disabilitare completamente un'app. E sì, questo non è il comando kill.
Android Quesito,

Destra. A volte pm disabledice solo "ucciso", quindi il processo si riavvia immediatamente. kill -STOP pid è meglio. Puoi vedere quali sono stati arrestati, in psoutput.
NoBugs

13

Ho trovato come pm disablefunziona:

Se corri cat /system/bin/pm, ti dà:

# Script to start "pm" on the device, which has a very rudimentary
# shell.
#
base=/system
export CLASSPATH=$base/framework/pm.jar
exec app_process $base/bin com.android.commands.pm.Pm "$@"

Quindi apparentemente è lo stesso del PackageManager che usiamo da Java, lo sta chiamando - solo in un contesto di root a cui nessuna app utente può accedere direttamente.

È possibile verificare se qualcosa è bloccato, utilizzando

getPackageManager().getApplicationEnabledSetting( the package name ) ==
        getPackageManager().COMPONENT_ENABLED_STATE_DISABLED)

-4

Nei sistemi Unix, i file hanno 3 autorizzazioni: lettura, scrittura ed esecuzione.

(Per 3 categorie di persone: il proprietario del file [di solito il suo creatore], un gruppo di persone e tutti gli altri, ma è fuori tema).

Se si rimuove l'autorizzazione di esecuzione del file, non può più essere avviato (eseguito).


Ciao dralpuop. Le app Android non sono binarie, quindi l'aggiunta o la rimozione dell'autorizzazione eseguibile non fa differenza per la loro esecuzione.
Firelord

Android è System 5 Unix, dove (ad esempio) gli script di shell non sono binari, ma l'aggiunta o la rimozione dell'autorizzazione eseguibile fa la differenza.
dralpuop,

Uno script di shell può essere eseguito senza set di bit eseguibili passandolo direttamente come argomento a un intero, quindi non fa alcuna differenza per gli script di shell o per le app. La domanda e la domanda riguarda le app Android, tra l'altro, non gli script di shell.
Firelord

1
Prova questa fonte per sapere come vengono eseguite le app in Android. github.com/dogriffiths/HeadFirstAndroid/wiki/…
Firelord
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.