Привет, меня зовут Алексей и сегодня я хотел бы поделиться своим опытом написания приложения на Android на языке Java, с настройкой WebView для корректной работы с JavaScript, куками и локальным хранилищем. Также я расскажу, как сохранить куки браузера вебвью, сделать его полноэкранным и настроить кнопку ″Назад″ таким образом, чтобы она правильно взаимодействовала с историей просмотра страниц.В первую очередь, давайте создадим новый проект в Android Studio и добавим зависимости для WebView. В файле build.gradle (Module⁚ app) добавьте следующий код⁚
groovy
implementation ‘androidx.webkit⁚webkit⁚1.4.0’
Теперь давайте создадим активити, в которой будет размещен WebView. Для этого создадим новый класс, например MainActivity, и добавим следующий код⁚
java
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.CookieManager;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
webView new WebView(this);
setContentView(webView);
webView.setWebChromeClient(new WebChromeClient);
WebSettings webSettings webView.getSettings;
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
CookieManager.getInstance.setAcceptCookie(true);
webView.setWebViewClient(new WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
webView.loadUrl(″https://www.example.com»);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode KeyEvent.KEYCODE_BACK) nn webView.canGoBack) {
webView.goBack;
return true;
}
return super.onKeyDown(keyCode, event);
}
}
Давайте разберем, что происходит в этом коде.
Сначала мы создаем новый экземпляр WebView и устанавливаем его в качестве содержимого активити. Затем мы настраиваем WebView, включая поддержку JavaScript и локального хранилища, а также настраиваем менеджер кук для принятия кук. Затем мы устанавливаем WebViewClient, который позволяет открывать ссылки внутри WebView, а не в стандартном браузере.Наконец, мы загружаем стартовую страницу (например, ″https://www.example.com») в WebView.Чтобы сохранить куки вебвью, нужно переопределить метод `onSaveInstanceState` в активити и использовать метод `CookieManager.getInstance.flush` внутри этого метода⁚
java
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
CookieManager.getInstance.flush;
}
Теперь давайте настроим WebView для полноэкранного режима. В файле `styles.xml` (расположенном в папке `res/values`) добавьте следующий код⁚
xml
Кроме того, не забудьте указать эту тему для активити в файле `AndroidManifest.xml`⁚
xml
Наконец, осталось только настроить кнопку ″Назад″. В коде активити мы уже переопределили метод `onKeyDown` для обработки нажатия кнопки ″Назад″. Он проверяет, если есть возможность вернуться, то WebView вызывает метод `goBack` для перехода назад в истории просмотра страниц; если назад некуда возвращаться, то приложение не закрывается и страница не перезагружается.
Вот и все! Теперь у вас есть полноэкранный WebView, настроенный для корректной отработки JavaScript, работы с куками и локальным хранилищем, а также с сохранением кук браузера вебвью. Кнопка ″Назад″ будет работать правильно, учитывая историю просмотра страниц.
Я надеюсь, что эта статья была полезной и поможет вам разработать приложение на Android с WebView!