Realizzo un'app per Android che verifica se determinate funzionalità di sicurezza del telefono sono abilitate. Ad esempio, se si dispone di accesso tramite password abilitato o se i dati sono crittografati sul telefono.Eseguire Android App due volte per funzionare, perché?
Per qualche motivo, l'app deve essere eseguita due volte per testare e vedere se queste funzionalità di sicurezza sono abilitate sul telefono o meno, e questo è il problema che sto cercando di risolvere. Mi piacerebbe testare e vedere se le funzionalità di sicurezza sono abilitate quando l'app viene creata e la prima volta che viene eseguita l'app, non la seconda volta che viene eseguita.
Verificare se queste funzioni sono abilitate nella funzione onStart()
nel file MainActivity
. Ho incluso il codice di funzioni di seguito:
@Override
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
@SuppressLint("NewApi")
public void onStart()
{
super.onStart();
//determine if phone uses lock pattern
//It returns 1 if pattern lock enabled and 0 if pin/password password enabled
ContentResolver cr = getBaseContext().getContentResolver();
lockPatternEnable = Settings.Secure.getInt(cr, Settings.Secure.LOCK_PATTERN_ENABLED, 0);//Settings.System
//returns 1 if pin/password protected. 0 if not
KeyguardManager keyguardManager = (KeyguardManager) getBaseContext().getSystemService(Context.KEYGUARD_SERVICE);
if(keyguardManager.isKeyguardSecure())
{
//it is pin or password protected
pinPasswordEnable=1;
}
else
{
//it is not pin or password protected
pinPasswordEnable=0;
}//http://stackoverflow.com/questions/6588969/device-password-in-android-is-existing-or-not/18716253#18716253
//determine if adb is enabled. works
adb=Settings.Global.getInt(cr, Settings.Global.ADB_ENABLED, 0);
//determine if bluetooth is enabled.works
bluetooth=Settings.Global.getInt(cr, Settings.Global.BLUETOOTH_ON, 0);
//Settings.System BLUETOOTH_DISCOVERABILITY
//determine if wifi is enabled. works
WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
if (wifi.isWifiEnabled())
{
//wifi is enabled
wifiInt=1;
}
else
wifiInt=0;
//determine if data is encrypted
getDeviceEncryptionencryption();
//determine if gps enabled
}//end of onStart() function
Se uno qualsiasi codice più bisogno di essere inviato a rispondere a questa domanda, fammelo sapere, e grazie per il vostro aiuto. Forse il problema ha qualcosa a che fare con lo super.onStart();
Qualcuno pensa che una schermata di caricamento splash possa aiutare a risolvere il problema?
Il mio primo pensiero è chiedere dove viene impostato getBaseContext. Se usi 'ApplicationContext' hai lo stesso problema? Cosa hai nella funzione del ciclo di vita 'onResume'? – Grambot
Attualmente non ho una funzione 'onResume'. Solo 'onStart' e' onCreate'. Ho cambiato tutte le occorrenze di 'getBaseContext' con' ApplicationContext' e richiede ancora 2 esecuzioni per funzionare. – pHorseSpec
Cosa succede la prima volta che viene eseguito? – nasch