Запустите приложение Android дважды, чтобы работать, почему?
Я делаю приложение для Android, которое проверяет, включены ли определенные функции безопасности на вашем телефоне. Например, если у вас включен пароль для входа или ваши данные зашифрованы на вашем телефоне.
По какой-то причине, приложение должно запускаться дважды, чтобы проверить и увидеть, включены ли эти функции безопасности на телефоне или нет, и это проблема, которую я пытаюсь решить. Я хотел бы, чтобы он протестировал и увидел, включены ли функции безопасности при создании приложения и при первом запуске приложения, а не при втором запуске.
Я проверяю, включены ли эти функции в onStart()
функция в моем MainActivity
файл. Я включил код функции ниже:
@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://stackru.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
Если для ответа на этот вопрос потребуется опубликовать еще один код, просто дайте мне знать, и спасибо за вашу помощь. Возможно, проблема как-то связана с super.onStart();
Кто-нибудь думает, что экран загрузки заставки может помочь решить проблему?
1 ответ
super.onStart(); Это хорошо. Заставка не поможет.
По вашему коду я не вижу, как вы определяете, сколько раз он запускался. Вы также упоминаете тестирование - это ручное тестирование или вы используете какой-либо фреймворк? Возможно, в вашей среде есть какой-то метод init, который запускается перед каждым запуском, и это делает дополнительный вызов onStart().
Проблемы не в этом коде. Используйте отладчик или logcat и выясните, кто вам звонит дважды, и, как спросил @nasch, что происходит при первом запуске.
Тем не менее, реальный вопрос, чтобы помочь вам остается - что вы имеете в виду "позвонить дважды". Вы дважды щелкаете по значку приложения вручную или какая-то среда тестирования вызывает ваше приложение дважды. Оба случая понятны для решения.