Android system webview: что это за программа, как включить

Подробно о WebView в Android: что, как и почему

Чаще всего для работы с простыми html-страницами используется виджет . В этом случае мы можем реализовать статический метод , который принадлежит утилитному HTML классу для парсинга строк с html кодом и дальнейшим его отображением в .


Виджет  обеспечивает простое форматирование для стилей (жирный, курсив), шрифтов, различным цветов, гиперссылок и т.д.

Однако со сложным форматированием и большим объемом HTML-страниц виджет  справиться уже не в состоянии. Например, работать с такими функциональными и объемными сайтами, как Facebook или другие соц сети через уже не получится.

В таких случаях на помощь приходит , так как только он может обрабатывать большие обхемы и множество HTML-тегов. Виждет  также может работать с и , которые метод  бы просто проигнорировал.

также обеспечивает работу с историей посещений и навигацией назад и вперед по страницам.

Тем не менее  также имеет целый набор недостатков: с точки зрения эффективности потребления памяти он значительно уступает . Причиной большого потребления памяти является веб-движок рендеринга контента WebKit/Blink, который еще используется в таких браузерах, как Chrome.

Configurations

For more detailed config, check project Documentation.

Device Permissions


You can remove any of the following requests if you do not need them, you can also disable features with permission variables. For default setup, there permissions are required.

INTERNET
ACCESS_NETWORK_STATE
ACCESS_WIFI_STATE
WRITE_EXTERNAL_STORAGE
READ_EXTERNAL_STORAGE
CAMERA
ACCESS_FINE_LOCATION
VIBRATE
c2dm.permission.RECEIVE
hardware.location.gps
hardware.touchscreen

permission is required for any webview to work.

is required for camera file processing: if you have and enabled to upload image/video files.

Config Variables

Complete webpage URL or load local file as

ASWV_URL   = "https://github.com/mgks"   // domain or directory or address to any root file

Permission Variables

ASWP_JSCRIPT     = true     // enable JavaScript for webview
ASWP_FUPLOAD     = true     // upload files from local device
ASWP_MULFILE     = true     // upload multiple files
ASWP_CAMUPLOAD   = true     // enable camera file upload
ASWP_ONLYCAM     = false    // incase you want only camera for input files

ASWP_LOCATION    = true     // track GPS locations

ASWP_RATINGS     = true     // show ratings dialog; auto configured, edit method get_rating() for customizations
ASWP_PULLFRESH   = true     // pull to refresh feature
ASWP_PBAR        = true     // show progress bar
ASWP_ZOOM        = false    // zoom control for webpages
ASWP_SFORM       = false    // save form data and auto-fill information
ASWP_OFFLINE     = false    // whether the loading webpages are offline or online
ASWP_EXTURL      = true     // open external url with default browser instead of app webview

ASWP_TAB         = true;    // instead of default browser, open external URLs in chrome tab
ASWP_ADMOB       = false;   // enabled Google AdMob

Other Variables

ASWV_LAYOUT      = ;   // default=0; for clear fullscreen layout and 1 to add drawer and navigation bar

// custom settings if layout `1` with search bar is set.
ASWV_SEARCH      = "https://www.google.com/search?q=";   // search query will start by the end of the present string

ASWV_SHARE_URL   = ASWV_URL+"?share=";   // URL where you process external content shared with the app
ASWV_EXC_LIST    = "";                   // domains allowed to be opened inside webview, separate domains with a comma (,)

ASWV_ADMOB       = "ca-app-pub-9276682923792397~7957851075";   // your unique publishers ID; this one is temporary

ASWV_F_TYPE      = "*/*"   // use `image/*` for image files only; check file type references for custom file type

Как включить службу?

Вообще по умолчанию она должна быть активирована у вас на смартфоне, но, если по каким-то причинам она не включена, можно это сделать несколькими способами.

Через Google Play

  • Прежде, чем активировать этот компонент, закройте браузер Google Chrome, если таковой был запущен;
  • Зайдите в Play Маркет и скачайте там ASW;
  • Теперь вам нужно запустить любую утилиту, которая требует наличие этого компонента, например, Вконтакте или «Погода» от Google;
  • Запускаете приложение, после чего ASW автоматически запускается на вашем смартфоне.

Внимание! В списке запущенных процессов можете проверить, что Android System Webview была запущена после выполненных действий. Но учтите, что служба будет автоматически отключена после запуска Google Chrome, и в дальнейшем запустить ее можно будет таким же способом, как описано выше

Через вкладку «Разработчика»


Так как данная служба была по умолчанию на новых версиях выключена, но не «вырезана» из функционала, ее можно активировать при помощи «режима разработчика». Если вы не в курсе, что это за режим, прочитайте наш отдельный материал на сайте.

  • Активируйте режим разработчика на своем устройстве;
  • Зайдите в «Настройки», далее перейдите в «Для разработчиков»;
  • Найдите в списке «Сервис Webview» или что-то похожее (в разных моделях устройств пункты меню могут немного отличаться);
  • Включите данную службу и выполняйте дальнейшие действия, которые вам необходимы.

Usage

Layout (XML)

<im.delight.android.webview.AdvancedWebView
    androidid="@+id/webview"
    androidlayout_width="match_parent"
    androidlayout_height="match_parent" />

Activity (Java)

Without Fragments

public class MyActivity extends Activity implements AdvancedWebView.Listener {

    private AdvancedWebView mWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);

        mWebView = (AdvancedWebView) findViewById(R.id.webview);
        mWebView.setListener(this, this);
        mWebView.setMixedContentAllowed(false);
        mWebView.loadUrl("http://www.example.org/");

        // ...
    }

    @SuppressLint("NewApi")
    @Override
    protected void onResume() {
        super.onResume();
        mWebView.onResume();
        // ...
    }

    @SuppressLint("NewApi")
    @Override
    protected void onPause() {
        mWebView.onPause();
        // ...
        super.onPause();
    }

    @Override
    protected void onDestroy() {
        mWebView.onDestroy();
        // ...
        super.onDestroy();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);
        mWebView.onActivityResult(requestCode, resultCode, intent);
        // ...
    }

    @Override
    public void onBackPressed() {
        if (!mWebView.onBackPressed()) { return; }
        // ...
        super.onBackPressed();
    }

    @Override
    public void onPageStarted(String url, Bitmap favicon) { }

    @Override
    public void onPageFinished(String url) { }

    @Override
    public void onPageError(int errorCode, String description, String failingUrl) { }

    @Override
    public void onDownloadRequested(String url, String suggestedFilename, String mimeType, long contentLength, String contentDisposition, String userAgent) { }

    @Override
    public void onExternalPageRequest(String url) { }

}

With Fragments ()

Note: If you’re using the class from the support library (), please refer to the next section (see below) instead of this one.

public class MyFragment extends Fragment implements AdvancedWebView.Listener {

    private AdvancedWebView mWebView;

    public MyFragment() { }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_my, container, false);

        mWebView = (AdvancedWebView) rootView.findViewById(R.id.webview);
        mWebView.setListener(this, this);
        mWebView.setMixedContentAllowed(false);
        mWebView.loadUrl("http://www.example.org/");

        // ...

        return rootView;
    }

    @SuppressLint("NewApi")
    @Override
    public void onResume() {
        super.onResume();
        mWebView.onResume();
        // ...
    }

    @SuppressLint("NewApi")
    @Override
    public void onPause() {
        mWebView.onPause();
        // ...
        super.onPause();
    }

    @Override
    public void onDestroy() {
        mWebView.onDestroy();
        // ...
        super.onDestroy();
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);
        mWebView.onActivityResult(requestCode, resultCode, intent);
        // ...
    }

    @Override
    public void onPageStarted(String url, Bitmap favicon) { }

    @Override
    public void onPageFinished(String url) { }

    @Override
    public void onPageError(int errorCode, String description, String failingUrl) { }

    @Override
    public void onDownloadRequested(String url, String suggestedFilename, String mimeType, long contentLength, String contentDisposition, String userAgent) { }

    @Override
    public void onExternalPageRequest(String url) { }

}

With Fragments from the support library ()

  • Use the code for normal usage as shown above

  • Change

    mWebView.setListener(this, this);

    to

    mWebView.setListener(getActivity(), this);
  • Add the following code to the parent in order to forward the results from the to the appropriate instance

    public class MyActivity extends FragmentActivity implements AdvancedWebView.Listener {
    
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent intent) {
         super.onActivityResult(requestCode, resultCode, intent);
         if (mFragment != null) {
             mFragment.onActivityResult(requestCode, resultCode, intent);
         }
     }
    
    }

Android System WebView можно ли удалить?


Специалисты не рекомендуют отключать и удалять сервис. Без него не смогут работать остальные ПО:

  1. Погода.
  2. Мессенджеры.
  3. Встроенные утилиты.

Чтобы избавиться от данного компонента, потребуется позаботиться о наличии рут-прав. Можно не удалять продукт, но сделать так, чтобы он был отключен в настройках.

Сначала следует продумать возможные последствия. Если появляется ошибка, следует выполнить такие манипуляции:

  • Осуществляется переход в настройки;
  • Открывается перечень ПО;
  • Необходимо нажать на утилиту, чтобы открылось окно с параметрами;
  • Далее нужно остановить его через активацию специальной кнопки;
  • Удаляются все обновления и очищается информация.

При наличии в распоряжении устройства ниже седьмой версии, удалять ПО не стоит. Это может привести к многочисленным сбоям в работе приложений.

Как удалить это приложение?

Если в распоряжении есть рут-права и уверенность, что программа больше не потребуется, удаление можно проводить. Для этого следует произвести такие манипуляции:

  1. Получаются root-права.
  2. Осуществляется переход в раздел Приложения.
  3. Здесь нужно найти Android System Webview и нажать на ПО.
  4. Нажимается кнопка удаления обновления.
  5. Активируется опция Остановить.
  6. После данных действий утилита перестает работать. При этом ресурсы не будут забирать лишнее на гаджете.

Если программа потребуется снова, нужно скачать и установить ее на устройство с Плей Маркета.


С этим читают