Это поведение по умолчанию для Android.
Когда вызов происходит, вы переместились за пределы приложения-браузера и в новый. Приложение-дозвон не имеет представления о браузере, поэтому при нажатии на него ОС Android берет на себя и запускает приложение-браузер. Это запустит новый браузер, тогда как если дозвонитель знал о браузере, он может помечать его переупорядочению на фронт.
Это сказанное, можно сделать приложение счетчика это с Somthing как:
private class EndCallListener extends PhoneStateListener {
private final String LOG_TAG = "EndCallListener";
private boolean isPhoneCalling = false;
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if (TelephonyManager.CALL_STATE_RINGING == state) {
Log.i(LOG_TAG, "RINGING, number: " + incomingNumber);
// finish();
}
if (TelephonyManager.CALL_STATE_OFFHOOK == state) {
// wait for phone to go offhook (probably set a boolean flag) so
// you know your app initiated the call.
Log.i(LOG_TAG, "OFFHOOK");
isPhoneCalling = true;
}
if (TelephonyManager.CALL_STATE_IDLE == state) {
// run when class initial and phone call ended,
// need detect flag from CALL_STATE_OFFHOOK
Log.i(LOG_TAG, "IDLE");
if (isPhoneCalling) {
Log.i(LOG_TAG, "restart app");
// restart app
Intent i = getBaseContext().getPackageManager()
.getLaunchIntentForPackage(
getBaseContext().getPackageName());
// i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(i);
isPhoneCalling = false;
}
}
}
Но, видимо, браузер не имеет очевидных причин, чтобы справиться с этим специально.
Это поведение одинаково, если вызывающий абонент вызывается из любого приложения? При возврате вызывающего устройства перезапуск? – GDM
Нет. Если приложение предназначено для обработки телефонных звонков, как описано выше (которое переупорядочивает активность приложения перед фронтом вместо создания нового) или как один запущенный экземпляр (что означает, что может быть только один из этих действий) , то возврат из phonecall не приведет к созданию нового действия вместо оригинала перед вызовом. Игры, например, часто разрабатываются как последние, так что вы можете просто возобновить игру после завершения вызова. – cYrixmorten
Какие устройства вы проверили? Просто пошел дальше и фактически попробовал позвонить с вашего сайта, чтобы проверить поведение и мой телефон (Samsung S2 CyanogenMod 10.1 Android 4.2.2), и он не перезагрузил страницу. Возможно, с более поздними версиями Android стал более умным в этих ситуациях, с фрагментами и всеми. Моя дискуссия была основана на моих знаниях о поведении и опыте работы с созданием фонотеков из моего приложения. Я использовал его для автоматического перенаправления номера на другой телефон и должен был выполнить приведенный выше код, чтобы вернуться к моему приложению. – cYrixmorten