В моей MainActivity у меня есть диалог, который открывается, если установлен флаг в намерении. Если диалог был создан, он отклоняется в onPause()
@Override
public void onPause() {
super.onPause();
if (_dialog!= null) {
_dialog.dismiss();
_dialog= null;
}
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (intentContainsFlag) {
_dialog = ....;
_dialog.show();
}
}
Диалоговое окно должно быть открыто, если нажата кнопка владельца списка ListView и создается URI намерения:
bttn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// The URL scheme is registered in the intent filter
String intentString = "http://open.example.com/myParameters";
v.getContext().startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse(intentString)));
}
});
AndroidManigfest содержит:
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="landscape" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="http" android:host="open.example.com" android:pathPattern=".*"/>
<data android:scheme="https" android:host="open.example.com" android:pathPattern=".*"/>
</intent-filter>
....
В версиях sdk установлено значение
minSdkVersion = 19
targetSdkVersion= 22
compileSdkVersion = 23
buildToolsVersion = 23
В Android < 7.1.1, все работает так, как ожидалось: onNewIntent()
вызывается и диалог виден.
Но на 7.1.1. Устройства
вызывается MainActivity onNewIntent
, затем непосредственно после onPause
и onResume
. Это означает, что активность открывается сама/выходит на передний план, но диалог был немедленно закрыт.
Возможным обходным путем является закрытие диалога в onStop()
, но я не понимаю, почему это происходит на Android 7.1.1 - что-то изменилось в жизненном цикле?