Devo rilevare che la mia applicazione è installata da Google Play o da altri mercati, come posso ottenere queste informazioni?Come sapere che un'applicazione è installata da google play o side-load?
risposta
La classe PackageManager
fornisce il metodo getInstallerPackageName che indica il nome del pacchetto di qualunque sia installato il pacchetto specificato. Le app caricate lateralmente non conterranno un valore.
MODIFICA: Nota @mttmllns 'answer below riguardante l'app store Amazon.
E FYI apparently l'ultima versione del negozio di Amazon, infine, imposta PackageManager.getInstallerPackageName()
-"com.amazon.venezia"
pure in contrasto con Google Play di "com.android.vending"
.
Impossibile creare un riferimento statico al metodo non statico getInstallerPackageName (String) dal tipo PackageManager –
Ogni app store ha la propria marketapp su Playstore che a sua volta installa i propri apk (pacchetti). Il packagemanager getInstaller ...() restituisce il nome del pacchetto del marketapp che ha installato un determinato apk. Per esempio. com.amazon.venezia è il nome del pacchetto del marketapp di Amazon. Abbastanza intelligente, perché poi PlayStore può controllare quali marketapp sono attendibili. Questo è progettato per prevenire alla fine TUTTI i sideload non attendibili. Notando che l'adozione di nuove versioni del sistema operativo Android sta diminuendo drasticamente. KitKat potrebbe diventare lo standard defacto. –
Io uso questo codice per controllare se una build è stato scaricato da un negozio o sideloaded:
public static boolean isStoreVersion(Context context) {
boolean result = false;
try {
String installer = context.getPackageManager()
.getInstallerPackageName(context.getPackageName());
result = !TextUtils.isEmpty(installer);
} catch (Throwable e) {
}
return result;
}
Funziona molto bene. – ttom
@AbhishekB quale versione di Android sei? Sei in un emulatore? – MattC
@AbhishekB Non conosco un modo per trovare l'origine delle app con caricamento laterale. Non sono sicuro di come verrebbe tracciato anche dal momento che tecnicamente è solo un file APK che viene caricato sul dispositivo da qualche parte e quindi presumibilmente installato tramite PackageManager. – MattC