Ho ottenuto un elenco di ApplicationInfo
oggetti con packageManager.getInstalledApplications(0) e tentando di categorizzarli in base al fatto che siano o meno un'applicazione di sistema.Come faccio a verificare se un'app è un'app non di sistema in Android?
Per un po 'ho utilizzato la tecnica descritta here, però dopo aver visto che nella mia richiesta, alcune delle applicazioni non erano nella lista di applicazioni non-sistema (come Facebook, che quando disponibile chiede al sistema per installarsi sulla scheda SD). Dopo aver letto la documentazione attuale per ApplicationInfo.FLAG_SYSTEM e aver capito che in realtà non filtra le app di sistema, ora sto cercando un nuovo approccio.
La mia ipotesi è che ci sia un grande divario tra UID di Sistema e app non di sistema che posso raccogliere per fare questa distinzione, ma fino ad ora non ho trovato una risposta. Ho anche esaminato altre flag, ad esempio ApplicationInfo.FLAG_EXTERNAL_STORAGE
, tuttavia sto supportando l'API 1.5.
Qualcuno ha una soluzione reale a questo (non coinvolge FLAG_SYSTEM
)?
Se si aggiorna un'app di sistema, l'aggiornamento verrà inserito nella directory/data/app. Ma è ancora un'app di sistema. –
@IonAalbers: ho avuto anche questo dubbio. La maggior parte pone le app di sistema che risiedono nel sistema/app e nelle app utente in data/app. Perché quando il sistema/app viene aggiornato il suo apk viene memorizzato in data/app? Potresti spiegarci un po 'di più? – Basher51
@ Basher51 L'applicazione il cui percorso è '/ system/app /' non significa che sia app di sistema. Significa che l'applicazione è precaricata. E per i dubbi sulle applicazioni di aggiornamento, posso indovinare, hanno scritto questa logica per tenere a mente il ripristino delle impostazioni di fabbrica. Se l'applicazione verrà aggiornata nella stessa posizione, sarà difficile trovare lo stato dell'applicazione originale durante il ripristino delle impostazioni di fabbrica. –