#java #android #android-activity #webview
Вопрос:
У меня есть простое действие с веб-представлением:
public class AGenericWebView extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a_generic_web_view);
WebView webView = findViewById(R.id.mainWebView);
ImageButton backButton = findViewById(R.id.backButton);
backButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
webView.getSettings().setJavaScriptEnabled(true);
Bundle intentBundle = getIntent().getExtras();
webView.getSettings().setSaveFormData(false);
TextView title = findViewById(R.id.title);
title.setText(intentBundle.containsKey("title")
? intentBundle.getString("title")
: getResources().getString(R.string.navigazione));
webView.setWebViewClient(new WebViewClient());
WebSettings settings = webView.getSettings();
settings.setSaveFormData(true);
settings.setDomStorageEnabled(true);
if (intentBundle.containsKey("cookie") amp;amp; intentBundle.containsKey("url")) {
final String cookie = intentBundle.getString("cookie");
final String url = intentBundle.getString("url");
CookieManager.getInstance().setCookie(url, cookie);
CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true);
webView.loadUrl(url);
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int progress) {
setProgress(progress * 100);
}
});
webView.setWebViewClient(new WebViewClient());
} else if (intentBundle.containsKey("html")) {
String htmlData = intentBundle.getString("html");
webView.loadData(htmlData, "text/html", "UTF-8");
} else if (intentBundle.containsKey("url")) {
String url = intentBundle.getString("url");
if (intentBundle.containsKey("postdata")) {
String postData = intentBundle.getString("postdata");
byte[] postDataBytes = EncodingUtils.getBytes(postData, "BASE64");
webView.postUrl(url, postDataBytes);
} else
webView.postUrl(url, null);
}
}
}
Когда пользователь переключается между приложениями, т. Е. для копирования OTP от аутентификатора (и затем действие теряет фокус), действие вызывает onDestroy(), поэтому ему приходится повторить процедуру входа в систему.
Как я могу сделать, чтобы поддерживать активность webview?
Ответ №1:
В конце концов я нашел проблему. Я забыл указать в манифесте для действия webview
android:noHistory = "true"
что предполагает уничтожение активности в случае потери фокуса (веб-представление не было задействовано).