Skip to content

Most visited

Recently visited

navigation

WebView

public class WebView
extends AbsoluteLayout implements ViewTreeObserver.OnGlobalFocusChangeListener, ViewGroup.OnHierarchyChangeListener

java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.widget.AbsoluteLayout
         ↳ android.webkit.WebView


A View that displays web pages. This class is the basis upon which you can roll your own web browser or simply display some online content within your Activity. It uses the WebKit rendering engine to display web pages and includes methods to navigate forward and backward through a history, zoom in and out, perform text searches and more.

Note that, in order for your Activity to access the Internet and load web pages in a WebView, you must add the INTERNET permissions to your Android Manifest file:

<uses-permission android:name="android.permission.INTERNET" />

This must be a child of the <manifest> element.

For more information, read Building Web Apps in WebView.

Basic usage

By default, a WebView provides no browser-like widgets, does not enable JavaScript and web page errors are ignored. If your goal is only to display some HTML as a part of your UI, this is probably fine; the user won't need to interact with the web page beyond reading it, and the web page won't need to interact with the user. If you actually want a full-blown web browser, then you probably want to invoke the Browser application with a URL Intent rather than show it with a WebView. For example:

 Uri uri = Uri.parse("https://www.example.com");
 Intent intent = new Intent(Intent.ACTION_VIEW, uri);
 startActivity(intent);
 

See Intent for more information.

To provide a WebView in your own Activity, include a <WebView> in your layout, or set the entire Activity window as a WebView during onCreate():

 WebView webview = new WebView(this);
 setContentView(webview);
 

Then load the desired web page:

 // Simplest usage: note that an exception will NOT be thrown
 // if there is an error loading this page (see below).
 webview.loadUrl("https://example.com/");

 // OR, you can also load from an HTML string:
 String summary = "<html><body>You scored <b>192</b> points.</body></html>";
 webview.loadData(summary, "text/html", null);
 // ... although note that there are restrictions on what this HTML can do.
 // See the JavaDocs for loadData() and loadDataWithBaseURL() for more info.
 

A WebView has several customization points where you can add your own behavior. These are:

  • Creating and setting a WebChromeClient subclass. This class is called when something that might impact a browser UI happens, for instance, progress updates and JavaScript alerts are sent here (see Debugging Tasks).
  • Creating and setting a WebViewClient subclass. It will be called when things happen that impact the rendering of the content, eg, errors or form submissions. You can also intercept URL loading here (via shouldOverrideUrlLoading()).
  • Modifying the WebSettings, such as enabling JavaScript with setJavaScriptEnabled().
  • Injecting Java objects into the WebView using the addJavascriptInterface(Object, String) method. This method allows you to inject Java objects into a page's JavaScript context, so that they can be accessed by JavaScript in the page.

Here's a more complicated example, showing error handling, settings, and progress notification:

 // Let's display the progress in the activity title bar, like the
 // browser app does.
 getWindow().requestFeature(Window.FEATURE_PROGRESS);

 webview.getSettings().setJavaScriptEnabled(true);

 final Activity activity = this;
 webview.setWebChromeClient(new WebChromeClient() {
   public void onProgressChanged(WebView view, int progress) {
     // Activities and WebViews measure progress with different scales.
     // The progress meter will automatically disappear when we reach 100%
     activity.setProgress(progress * 1000);
   }
 });
 webview.setWebViewClient(new WebViewClient() {
   public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
     Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
   }
 });

 webview.loadUrl("https://developer.android.com/");
 

Zoom

To enable the built-in zoom, set WebSettings.setBuiltInZoomControls(boolean) (introduced in API level CUPCAKE).

NOTE: Using zoom if either the height or width is set to WRAP_CONTENT may lead to undefined behavior and should be avoided.

Cookie and window management

For obvious security reasons, your application has its own cache, cookie store etc.—it does not share the Browser application's data.

By default, requests by the HTML to open new windows are ignored. This is true whether they be opened by JavaScript or by the target attribute on a link. You can customize your WebChromeClient to provide your own behavior for opening multiple windows, and render them in whatever manner you want.

The standard behavior for an Activity is to be destroyed and recreated when the device orientation or any other configuration changes. This will cause the WebView to reload the current page. If you don't want that, you can set your Activity to handle the orientation and keyboardHidden changes, and then just leave the WebView alone. It'll automatically re-orient itself as appropriate. Read Handling Runtime Changes for more information about how to handle configuration changes during runtime.

Building web pages to support different screen densities

The screen density of a device is based on the screen resolution. A screen with low density has fewer available pixels per inch, where a screen with high density has more — sometimes significantly more — pixels per inch. The density of a screen is important because, other things being equal, a UI element (such as a button) whose height and width are defined in terms of screen pixels will appear larger on the lower density screen and smaller on the higher density screen. For simplicity, Android collapses all actual screen densities into three generalized densities: high, medium, and low.

By default, WebView scales a web page so that it is drawn at a size that matches the default appearance on a medium density screen. So, it applies 1.5x scaling on a high density screen (because its pixels are smaller) and 0.75x scaling on a low density screen (because its pixels are bigger). Starting with API level ECLAIR, WebView supports DOM, CSS, and meta tag features to help you (as a web developer) target screens with different screen densities.

Here's a summary of the features you can use to handle different screen densities:

  • The window.devicePixelRatio DOM property. The value of this property specifies the default scaling factor used for the current device. For example, if the value of window.devicePixelRatio is "1.0", then the device is considered a medium density (mdpi) device and default scaling is not applied to the web page; if the value is "1.5", then the device is considered a high density device (hdpi) and the page content is scaled 1.5x; if the value is "0.75", then the device is considered a low density device (ldpi) and the content is scaled 0.75x.
  • The -webkit-device-pixel-ratio CSS media query. Use this to specify the screen densities for which this style sheet is to be used. The corresponding value should be either "0.75", "1", or "1.5", to indicate that the styles are for devices with low density, medium density, or high density screens, respectively. For example:
     <link rel="stylesheet" media="screen and (-webkit-device-pixel-ratio:1.5)" href="hdpi.css" />

    The hdpi.css stylesheet is only used for devices with a screen pixel ration of 1.5, which is the high density pixel ratio.

HTML5 Video support

In order to support inline HTML5 video in your application you need to have hardware acceleration turned on.

Full screen support

In order to support full screen — for video or other HTML content — you need to set a WebChromeClient and implement both onShowCustomView(View, WebChromeClient.CustomViewCallback) and onHideCustomView(). If the implementation of either of these two methods is missing then the web contents will not be allowed to enter full screen. Optionally you can implement getVideoLoadingProgressView() to customize the View displayed whilst a video is loading.

HTML5 Geolocation API support

For applications targeting Android N and later releases (API level > M) the geolocation api is only supported on secure origins such as https. For such applications requests to geolocation api on non-secure origins are automatically denied without invoking the corresponding onGeolocationPermissionsShowPrompt(String, GeolocationPermissions.Callback) method.

Layout size

It is recommended to set the WebView layout height to a fixed value or to MATCH_PARENT instead of using WRAP_CONTENT. When using MATCH_PARENT for the height none of the WebView's parents should use a WRAP_CONTENT layout height since that could result in incorrect sizing of the views.

Setting the WebView's height to WRAP_CONTENT enables the following behaviors:

  • The HTML body layout height is set to a fixed value. This means that elements with a height relative to the HTML body may not be sized correctly.
  • For applications targeting KITKAT and earlier SDKs the HTML viewport meta tag will be ignored in order to preserve backwards compatibility.

Using a layout width of WRAP_CONTENT is not supported. If such a width is used the WebView will attempt to use the width of the parent instead.

Metrics

WebView may upload anonymous diagnostic data to Google when the user has consented. This data helps Google improve WebView. Data is collected on a per-app basis for each app which has instantiated a WebView. An individual app can opt out of this feature by putting the following tag in its manifest:

 <meta-data android:name="android.webkit.WebView.MetricsOptOut"
            android:value="true" />
 

Data will only be uploaded for a given app if the user has consented AND the app has not opted out.

Summary

Nested classes

interface WebView.FindListener

Interface to listen for find results. 

class WebView.HitTestResult

 

interface WebView.PictureListener

This interface was deprecated in API level 12. This interface is now obsolete.  

class WebView.VisualStateCallback

Callback interface supplied to postVisualStateCallback(long, WebView.VisualStateCallback) for receiving notifications about the visual state. 

class WebView.WebViewTransport

Transportation object for returning WebView across thread boundaries. 

Inherited XML attributes

From class android.view.ViewGroup
From class android.view.View

Constants

int RENDERER_PRIORITY_BOUND

The renderer associated with this WebView is bound with the default priority for services.

int RENDERER_PRIORITY_IMPORTANT

The renderer associated with this WebView is bound with BIND_IMPORTANT.

int RENDERER_PRIORITY_WAIVED

The renderer associated with this WebView is bound with BIND_WAIVE_PRIORITY.

String SCHEME_GEO

URI scheme for map address.

String SCHEME_MAILTO

URI scheme for email address.

String SCHEME_TEL

URI scheme for telephone number.

Inherited constants

From class android.view.ViewGroup
From class android.view.View

Inherited fields

From class android.view.View

Public constructors

WebView(Context context)

Constructs a new WebView with a Context object.

WebView(Context context, AttributeSet attrs)

Constructs a new WebView with layout parameters.

WebView(Context context, AttributeSet attrs, int defStyleAttr)

Constructs a new WebView with layout parameters and a default style.

WebView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)

Constructs a new WebView with layout parameters and a default style.

WebView(Context context, AttributeSet attrs, int defStyleAttr, boolean privateBrowsing)

This constructor was deprecated in API level 17. Private browsing is no longer supported directly via WebView and will be removed in a future release. Prefer using WebSettings, WebViewDatabase, CookieManager and WebStorage for fine-grained control of privacy data.

Public methods

void addJavascriptInterface(Object object, String name)

Injects the supplied Java object into this WebView.

void autofill(SparseArray<AutofillValue> values)

Automatically fills the content of a virtual views.

boolean canGoBack()

Gets whether this WebView has a back history item.

boolean canGoBackOrForward(int steps)

Gets whether the page can go back or forward the given number of steps.

boolean canGoForward()

Gets whether this WebView has a forward history item.

boolean canZoomIn()

This method was deprecated in API level 17. This method is prone to inaccuracy due to race conditions between the web rendering and UI threads; prefer onScaleChanged(WebView, float, float).

boolean canZoomOut()

This method was deprecated in API level 17. This method is prone to inaccuracy due to race conditions between the web rendering and UI threads; prefer onScaleChanged(WebView, float, float).

Picture capturePicture()

This method was deprecated in API level 19. Use onDraw(Canvas) to obtain a bitmap snapshot of the WebView, or saveWebArchive(String) to save the content to a file.

void clearCache(boolean includeDiskFiles)

Clears the resource cache.

static void clearClientCertPreferences(Runnable onCleared)

Clears the client certificate preferences stored in response to proceeding/cancelling client cert requests.

void clearFormData()

Removes the autocomplete popup from the currently focused form field, if present.

void clearHistory()

Tells this WebView to clear its internal back/forward list.

void clearMatches()

Clears the highlighting surrounding text matches created by findAllAsync(String).

void clearSslPreferences()

Clears the SSL preferences table stored in response to proceeding with SSL certificate errors.

void clearView()

This method was deprecated in API level 18. Use WebView.loadUrl("about:blank") to reliably reset the view state and release page resources (including any running JavaScript).

void computeScroll()

Called by a parent to request that a child update its values for mScrollX and mScrollY if necessary.

WebBackForwardList copyBackForwardList()

Gets the WebBackForwardList for this WebView.

PrintDocumentAdapter createPrintDocumentAdapter(String documentName)

Creates a PrintDocumentAdapter that provides the content of this WebView for printing.

PrintDocumentAdapter createPrintDocumentAdapter()

This method was deprecated in API level 21. Use createPrintDocumentAdapter(String) which requires user to provide a print document name.

WebMessagePort[] createWebMessageChannel()

Creates a message channel to communicate with JS and returns the message ports that represent the endpoints of this message channel.

void destroy()

Destroys the internal state of this WebView.

boolean dispatchKeyEvent(KeyEvent event)

Dispatch a key event to the next view on the focus path.

void documentHasImages(Message response)

Queries the document to see if it contains any image references.

static void enableSlowWholeDocumentDraw()

For apps targeting the L release, WebView has a new default behavior that reduces memory footprint and increases performance by intelligently choosing the portion of the HTML document that needs to be drawn.

void evaluateJavascript(String script, ValueCallback<String> resultCallback)

Asynchronously evaluates JavaScript in the context of the currently displayed page.

static String findAddress(String addr)

This method was deprecated in API level O. findAddress is deprecated. It only supports a subset of US addresses and has a high false positive rate. Calling findAddress also causes WebView to be loaded into the app, which significantly increases memory usage if the app doesn't already use WebView. Use TextClassifier instead for classifying text and finding addresses.

int findAll(String find)

This method was deprecated in API level 16. findAllAsync(String) is preferred.

void findAllAsync(String find)

Finds all instances of find on the page and highlights them, asynchronously.

View findFocus()

Find the view in the hierarchy rooted at this view that currently has focus.

void findNext(boolean forward)

Highlights and scrolls to the next match found by findAllAsync(String), wrapping around page boundaries as necessary.

void flingScroll(int vx, int vy)
void freeMemory()

This method was deprecated in API level 19. Memory caches are automatically dropped when no longer needed, and in response to system memory pressure.

CharSequence getAccessibilityClassName()

Return the class name of this object to be used for accessibility purposes.

AccessibilityNodeProvider getAccessibilityNodeProvider()

Gets the provider for managing a virtual view hierarchy rooted at this View and reported to AccessibilityServices that explore the window content.

SslCertificate getCertificate()

Gets the SSL certificate for the main top-level page or null if there is no certificate (the site is not secure).

int getContentHeight()

Gets the height of the HTML content.

static PackageInfo getCurrentWebViewPackage()

If WebView has already been loaded into the current process this method will return the package that was used to load it.

Bitmap getFavicon()

Gets the favicon for the current page.

Handler getHandler()
WebView.HitTestResult getHitTestResult()

Gets a HitTestResult based on the current cursor node.

String[] getHttpAuthUsernamePassword(String host, String realm)

This method was deprecated in API level O. Use getHttpAuthUsernamePassword(String, String) instead

String getOriginalUrl()

Gets the original URL for the current page.

int getProgress()

Gets the progress for the current page.

boolean getRendererPriorityWaivedWhenNotVisible()

Return whether this WebView requests a priority of RENDERER_PRIORITY_WAIVED when not visible.

int getRendererRequestedPriority()

Get the requested renderer priority for this WebView.

float getScale()

This method was deprecated in API level 17. This method is prone to inaccuracy due to race conditions between the web rendering and UI threads; prefer onScaleChanged(WebView, float, float).

WebSettings getSettings()

Gets the WebSettings object used to control the settings for this WebView.

TextClassifier getTextClassifier()

Returns the TextClassifier used by this WebView.

String getTitle()

Gets the title for the current page.

String getUrl()

Gets the URL for the current page.

WebChromeClient getWebChromeClient()

Gets the chrome handler.

WebViewClient getWebViewClient()

Gets the WebViewClient.

void goBack()

Goes back in the history of this WebView.

void goBackOrForward(int steps)

Goes to the history item that is the number of steps away from the current item.

void goForward()

Goes forward in the history of this WebView.

void invokeZoomPicker()

Invokes the graphical zoom picker widget for this WebView.

boolean isPrivateBrowsingEnabled()

Gets whether private browsing is enabled in this WebView.

void loadData(String data, String mimeType, String encoding)

Loads the given data into this WebView using a 'data' scheme URL.

void loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl)

Loads the given data into this WebView, using baseUrl as the base URL for the content.

void loadUrl(String url)

Loads the given URL.

void loadUrl(String url, Map<StringString> additionalHttpHeaders)

Loads the given URL with the specified additional HTTP headers.

void onChildViewAdded(View parent, View child)

This method was deprecated in API level 8. WebView no longer needs to implement ViewGroup.OnHierarchyChangeListener. This method does nothing now.

void onChildViewRemoved(View p, View child)

This method was deprecated in API level 8. WebView no longer needs to implement ViewGroup.OnHierarchyChangeListener. This method does nothing now.

InputConnection onCreateInputConnection(EditorInfo outAttrs)

Creates a new InputConnection for an InputMethod to interact with the WebView.

boolean onDragEvent(DragEvent event)

Handles drag events sent by the system following a call to startDragAndDrop().

void onFinishTemporaryDetach()

Called after onStartTemporaryDetach() when the container is done changing the view.

boolean onGenericMotionEvent(MotionEvent event)

Implement this method to handle generic motion events.

void onGlobalFocusChanged(View oldFocus, View newFocus)

This method was deprecated in API level 3. WebView should not have implemented ViewTreeObserver.OnGlobalFocusChangeListener. This method does nothing now.

boolean onHoverEvent(MotionEvent event)

Implement this method to handle hover events.

boolean onKeyDown(int keyCode, KeyEvent event)

Default implementation of KeyEvent.Callback.onKeyDown(): perform press of the view when KEYCODE_DPAD_CENTER or KEYCODE_ENTER is released, if the view is enabled and clickable.

boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event)

Default implementation of KeyEvent.Callback.onKeyMultiple(): always returns false (doesn't handle the event).

boolean onKeyUp(int keyCode, KeyEvent event)

Default implementation of KeyEvent.Callback.onKeyUp(): perform clicking of the view when KEYCODE_DPAD_CENTER, KEYCODE_ENTER or KEYCODE_SPACE is released.

void onMovedToDisplay(int displayId, Configuration config)

Called by the system when the hosting activity is moved from one display to another without recreation.

void onPause()

Does a best-effort attempt to pause any processing that can be paused safely, such as animations and geolocation.

void onProvideAutofillVirtualStructure(ViewStructure structure, int flags)

Called when assist structure is being retrieved from a view as part of an autofill request to generate additional virtual structure under this view.

The ViewStructure traditionally represents a View, while for web pages it represent HTML nodes.

void onProvideVirtualStructure(ViewStructure structure)

Called when assist structure is being retrieved from a view as part of Activity.onProvideAssistData to generate additional virtual structure under this view.

void onResume()

Resumes a WebView after a previous call to onPause().

void onStartTemporaryDetach()

This is called when a container is going to temporarily detach a child, with ViewGroup.detachViewFromParent.

boolean onTouchEvent(MotionEvent event)

Implement this method to handle touch screen motion events.

boolean onTrackballEvent(MotionEvent event)

Implement this method to handle trackball motion events.

void onWindowFocusChanged(boolean hasWindowFocus)

Called when the window containing this view gains or loses focus.

boolean overlayHorizontalScrollbar()

This method was deprecated in API level 23. This method is now obsolete.

boolean overlayVerticalScrollbar()

This method was deprecated in API level 23. This method is now obsolete.

boolean pageDown(boolean bottom)

Scrolls the contents of this WebView down by half the page size.

boolean pageUp(boolean top)

Scrolls the contents of this WebView up by half the view size.

void pauseTimers()

Pauses all layout, parsing, and JavaScript timers for all WebViews.

boolean performLongClick()

Calls this view's OnLongClickListener, if it is defined.

void postUrl(String url, byte[] postData)

Loads the URL with postData using "POST" method into this WebView.

void postVisualStateCallback(long requestId, WebView.VisualStateCallback callback)

Posts a WebView.VisualStateCallback, which will be called when the current state of the WebView is ready to be drawn.

void postWebMessage(WebMessage message, Uri targetOrigin)

Post a message to main frame.

void reload()

Reloads the current URL.

void removeJavascriptInterface(String name)

Removes a previously injected Java object from this WebView.

boolean requestChildRectangleOnScreen(View child, Rect rect, boolean immediate)

Called when a child of this group wants a particular rectangle to be positioned onto the screen.

boolean requestFocus(int direction, Rect previouslyFocusedRect)

Call this to try to give focus to a specific view or to one of its descendants and give it hints about the direction and a specific rectangle that the focus is coming from. Looks for a view to give focus to respecting the setting specified by getDescendantFocusability().

void requestFocusNodeHref(Message hrefMsg)

Requests the anchor or image element URL at the last tapped point.

void requestImageRef(Message msg)

Requests the URL of the image last touched by the user.

WebBackForwardList restoreState(Bundle inState)

Restores the state of this WebView from the given Bundle.

void resumeTimers()

Resumes all layout, parsing, and JavaScript timers for all WebViews.

void savePassword(String host, String username, String password)

This method was deprecated in API level 18. Saving passwords in WebView will not be supported in future versions.

WebBackForwardList saveState(Bundle outState)

Saves the state of this WebView used in onSaveInstanceState(Bundle).

void saveWebArchive(String filename)

Saves the current view as a web archive.

void saveWebArchive(String basename, boolean autoname, ValueCallback<String> callback)

Saves the current view as a web archive.

void setBackgroundColor(int color)

Sets the background color for this view.

void setCertificate(SslCertificate certificate)

This method was deprecated in API level 17. Calling this function has no useful effect, and will be ignored in future releases.

void setDownloadListener(DownloadListener listener)

Registers the interface to be used when content can not be handled by the rendering engine, and should be downloaded instead.

void setFindListener(WebView.FindListener listener)

Registers the listener to be notified as find-on-page operations progress.

void setHorizontalScrollbarOverlay(boolean overlay)

This method was deprecated in API level 23. This method has no effect.

void setHttpAuthUsernamePassword(String host, String realm, String username, String password)

This method was deprecated in API level O. Use setHttpAuthUsernamePassword(String, String, String, String) instead

void setInitialScale(int scaleInPercent)

Sets the initial scale for this WebView.

void setLayerType(int layerType, Paint paint)

Specifies the type of layer backing this view.

void setLayoutParams(ViewGroup.LayoutParams params)

Set the layout parameters associated with this view.

void setMapTrackballToArrowKeys(boolean setMap)

This method was deprecated in API level 17. Only the default case, true, will be supported in a future version.

void setNetworkAvailable(boolean networkUp)

Informs WebView of the network state.

void setOverScrollMode(int mode)

Set the over-scroll mode for this view.

void setPictureListener(WebView.PictureListener listener)

This method was deprecated in API level 12. This method is now obsolete.

void setRendererPriorityPolicy(int rendererRequestedPriority, boolean waivedWhenNotVisible)

Set the renderer priority policy for this WebView.

void setScrollBarStyle(int style)

Specify the style of the scrollbars.

void setTextClassifier(TextClassifier textClassifier)

Sets the TextClassifier for this WebView.

void setVerticalScrollbarOverlay(boolean overlay)

This method was deprecated in API level 23. This method has no effect.

void setWebChromeClient(WebChromeClient client)

Sets the chrome handler.

static void setWebContentsDebuggingEnabled(boolean enabled)

Enables debugging of web contents (HTML / CSS / JavaScript) loaded into any WebViews of this application.

void setWebViewClient(WebViewClient client)

Sets the WebViewClient that will receive various notifications and requests.

boolean shouldDelayChildPressedState()

Return true if the pressed state should be delayed for children or descendants of this ViewGroup.

boolean showFindDialog(String text, boolean showIme)

This method was deprecated in API level 18. This method does not work reliably on all Android versions; implementing a custom find dialog using WebView.findAllAsync() provides a more robust solution.

void stopLoading()

Stops the current load.

void zoomBy(float zoomFactor)

Performs a zoom operation in this WebView.

boolean zoomIn()

Performs zoom in in this WebView.

boolean zoomOut()

Performs zoom out in this WebView.

Protected methods

int computeHorizontalScrollOffset()

Compute the horizontal offset of the horizontal scrollbar's thumb within the horizontal range.

int computeHorizontalScrollRange()

Compute the horizontal range that the horizontal scrollbar represents.

int computeVerticalScrollExtent()

Compute the vertical extent of the vertical scrollbar's thumb within the vertical range.

int computeVerticalScrollOffset()

Compute the vertical offset of the vertical scrollbar's thumb within the horizontal range.

int computeVerticalScrollRange()

Compute the vertical range that the vertical scrollbar represents.

void dispatchDraw(Canvas canvas)

Called by draw to draw the child views.

void onAttachedToWindow()

This is called when the view is attached to a window.

void onConfigurationChanged(Configuration newConfig)

Called when the current configuration of the resources being used by the application have changed.

void onDraw(Canvas canvas)

Implement this to do your drawing.

void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect)

Called by the view system when the focus state of this view changes.

void onMeasure(int widthMeasureSpec, int heightMeasureSpec)

Measure the view and its content to determine the measured width and the measured height.

void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY)

Called by overScrollBy(int, int, int, int, int, int, int, int, boolean) to respond to the results of an over-scroll operation.

void onScrollChanged(int l, int t, int oldl, int oldt)

This is called in response to an internal scroll in this view (i.e., the view scrolled its own contents).

void onSizeChanged(int w, int h, int ow, int oh)

This is called during layout when the size of this view has changed.

void onVisibilityChanged(View changedView, int visibility)

Called when the visibility of the view or an ancestor of the view has changed.

void onWindowVisibilityChanged(int visibility)

Called when the window containing has change its visibility (between GONE, INVISIBLE, and VISIBLE).

Inherited methods

From class android.widget.AbsoluteLayout
From class android.view.ViewGroup
From class android.view.View
From class java.lang.Object
From interface android.view.ViewParent
From interface android.view.ViewManager
From interface android.graphics.drawable.Drawable.Callback
From interface android.view.KeyEvent.Callback
From interface android.view.accessibility.AccessibilityEventSource
From interface android.view.ViewTreeObserver.OnGlobalFocusChangeListener
From interface android.view.ViewGroup.OnHierarchyChangeListener

Constants

RENDERER_PRIORITY_BOUND

int RENDERER_PRIORITY_BOUND

The renderer associated with this WebView is bound with the default priority for services. Use with setRendererPriorityPolicy(int, boolean).

Constant Value: 1 (0x00000001)

RENDERER_PRIORITY_IMPORTANT

int RENDERER_PRIORITY_IMPORTANT

The renderer associated with this WebView is bound with BIND_IMPORTANT. Use with setRendererPriorityPolicy(int, boolean).

Constant Value: 2 (0x00000002)

RENDERER_PRIORITY_WAIVED

int RENDERER_PRIORITY_WAIVED

The renderer associated with this WebView is bound with BIND_WAIVE_PRIORITY. At this priority level WebView renderers will be strong targets for out of memory killing. Use with setRendererPriorityPolicy(int, boolean).

Constant Value: 0 (0x00000000)

SCHEME_GEO

added in API level 1
String SCHEME_GEO

URI scheme for map address.

Constant Value: "geo:0,0?q="

SCHEME_MAILTO

added in API level 1
String SCHEME_MAILTO

URI scheme for email address.

Constant Value: "mailto:"

SCHEME_TEL

added in API level 1
String SCHEME_TEL

URI scheme for telephone number.

Constant Value: "tel:"

Public constructors

WebView

added in API level 1
WebView (Context context)

Constructs a new WebView with a Context object.

Parameters
context Context: a Context object used to access application assets

WebView

added in API level 1
WebView (Context context, 
                AttributeSet attrs)

Constructs a new WebView with layout parameters.

Parameters
context Context: a Context object used to access application assets
attrs AttributeSet: an AttributeSet passed to our parent

WebView

added in API level 1
WebView (Context context, 
                AttributeSet attrs, 
                int defStyleAttr)

Constructs a new WebView with layout parameters and a default style.

Parameters
context Context: a Context object used to access application assets
attrs AttributeSet: an AttributeSet passed to our parent
defStyleAttr int: an attribute in the current theme that contains a reference to a style resource that supplies default values for the view. Can be 0 to not look for defaults.

WebView

added in API level 21
WebView (Context context, 
                AttributeSet attrs, 
                int defStyleAttr, 
                int defStyleRes)

Constructs a new WebView with layout parameters and a default style.

Parameters
context Context: a Context object used to access application assets
attrs AttributeSet: an AttributeSet passed to our parent
defStyleAttr int: an attribute in the current theme that contains a reference to a style resource that supplies default values for the view. Can be 0 to not look for defaults.
defStyleRes int: a resource identifier of a style resource that supplies default values for the view, used only if defStyleAttr is 0 or can not be found in the theme. Can be 0 to not look for defaults.

WebView

added in API level 11
WebView (Context context, 
                AttributeSet attrs, 
                int defStyleAttr, 
                boolean privateBrowsing)

This constructor was deprecated in API level 17.
Private browsing is no longer supported directly via WebView and will be removed in a future release. Prefer using WebSettings, WebViewDatabase, CookieManager and WebStorage for fine-grained control of privacy data.

Constructs a new WebView with layout parameters and a default style.

Parameters
context Context: a Context object used to access application assets
attrs AttributeSet: an AttributeSet passed to our parent
defStyleAttr int: an attribute in the current theme that contains a reference to a style resource that supplies default values for the view. Can be 0 to not look for defaults.
privateBrowsing boolean: whether this WebView will be initialized in private mode

Public methods

addJavascriptInterface

added in API level 1
void addJavascriptInterface (Object object, 
                String name)

Injects the supplied Java object into this WebView. The object is injected into the JavaScript context of the main frame, using the supplied name. This allows the Java object's methods to be accessed from JavaScript. For applications targeted to API level JELLY_BEAN_MR1 and above, only public methods that are annotated with JavascriptInterface can be accessed from JavaScript. For applications targeted to API level JELLY_BEAN or below, all public methods (including the inherited ones) can be accessed, see the important security note below for implications.

Note that injected objects will not appear in JavaScript until the page is next (re)loaded. For example:

 class JsObject {
    @JavascriptInterface
    public String toString() { return "injectedObject"; }
 }
 webView.addJavascriptInterface(new JsObject(), "injectedObject");
 webView.loadData("", "text/html", null);
 webView.loadUrl("javascript:alert(injectedObject.toString())");

IMPORTANT:

  • This method can be used to allow JavaScript to control the host application. This is a powerful feature, but also presents a security risk for apps targeting JELLY_BEAN or earlier. Apps that target a version later than JELLY_BEAN are still vulnerable if the app runs on a device running Android earlier than 4.2. The most secure way to use this method is to target JELLY_BEAN_MR1 and to ensure the method is called only when running on Android 4.2 or later. With these older versions, JavaScript could use reflection to access an injected object's public fields. Use of this method in a WebView containing untrusted content could allow an attacker to manipulate the host application in unintended ways, executing Java code with the permissions of the host application. Use extreme care when using this method in a WebView which could contain untrusted content.
  • JavaScript interacts with Java object on a private, background thread of this WebView. Care is therefore required to maintain thread safety.
  • The Java object's fields are not accessible.
  • For applications targeted to API level LOLLIPOP and above, methods of injected Java objects are enumerable from JavaScript.

Parameters
object Object: the Java object to inject into this WebView's JavaScript context. Null values are ignored.
name String: the name used to expose the object in JavaScript

autofill

void autofill (SparseArray<AutofillValue> values)

Automatically fills the content of a virtual views.

See autofill(AutofillValue) and onProvideAutofillVirtualStructure(ViewStructure, int) for more info.

To indicate that a virtual view was autofilled @android:drawable/autofilled_highlight should be drawn over it until the data changes.

Parameters
values SparseArray: map of values to be autofilled, keyed by virtual child id.

canGoBack

added in API level 1
boolean canGoBack ()

Gets whether this WebView has a back history item.

Returns
boolean true iff this WebView has a back history item

canGoBackOrForward

added in API level 1
boolean canGoBackOrForward (int steps)

Gets whether the page can go back or forward the given number of steps.

Parameters
steps int: the negative or positive number of steps to move the history
Returns
boolean

canGoForward

added in API level 1
boolean canGoForward ()

Gets whether this WebView has a forward history item.

Returns
boolean true iff this WebView has a forward history item

canZoomIn

added in API level 11
boolean canZoomIn ()

This method was deprecated in API level 17.
This method is prone to inaccuracy due to race conditions between the web rendering and UI threads; prefer onScaleChanged(WebView, float, float).

Gets whether this WebView can be zoomed in.

Returns
boolean true if this WebView can be zoomed in

canZoomOut

added in API level 11
boolean canZoomOut ()

This method was deprecated in API level 17.
This method is prone to inaccuracy due to race conditions between the web rendering and UI threads; prefer onScaleChanged(WebView, float, float).

Gets whether this WebView can be zoomed out.

Returns
boolean true if this WebView can be zoomed out

capturePicture

added in API level 1
Picture capturePicture ()

This method was deprecated in API level 19.
Use onDraw(Canvas) to obtain a bitmap snapshot of the WebView, or saveWebArchive(String) to save the content to a file.

Gets a new picture that captures the current contents of this WebView. The picture is of the entire document being displayed, and is not limited to the area currently displayed by this WebView. Also, the picture is a static copy and is unaffected by later changes to the content being displayed.

Note that due to internal changes, for API levels between HONEYCOMB and ICE_CREAM_SANDWICH inclusive, the picture does not include fixed position elements or scrollable divs.

Note that from JELLY_BEAN_MR1 the returned picture should only be drawn into bitmap-backed Canvas - using any other type of Canvas will involve additional conversion at a cost in memory and performance. Also the createFromStream(InputStream) and writeToStream(OutputStream) methods are not supported on the returned object.

Returns
Picture a picture that captures the current contents of this WebView

clearCache

added in API level 1
void clearCache (boolean includeDiskFiles)

Clears the resource cache. Note that the cache is per-application, so this will clear the cache for all WebViews used.

Parameters
includeDiskFiles boolean: if false, only the RAM cache is cleared

clearClientCertPreferences

added in API level 21
void clearClientCertPreferences (Runnable onCleared)

Clears the client certificate preferences stored in response to proceeding/cancelling client cert requests. Note that WebView automatically clears these preferences when it receives a ACTION_STORAGE_CHANGED intent. The preferences are shared by all the WebViews that are created by the embedder application.

Parameters
onCleared Runnable: A runnable to be invoked when client certs are cleared. The embedder can pass null if not interested in the callback. The runnable will be called in UI thread.

clearFormData

added in API level 1
void clearFormData ()

Removes the autocomplete popup from the currently focused form field, if present. Note this only affects the display of the autocomplete popup, it does not remove any saved form data from this WebView's store. To do that, use clearFormData().

clearHistory

added in API level 1
void clearHistory ()

Tells this WebView to clear its internal back/forward list.

clearMatches

added in API level 3
void clearMatches ()

Clears the highlighting surrounding text matches created by findAllAsync(String).

clearSslPreferences

added in API level 1
void clearSslPreferences ()

Clears the SSL preferences table stored in response to proceeding with SSL certificate errors.

clearView

added in API level 1
void clearView ()

This method was deprecated in API level 18.
Use WebView.loadUrl("about:blank") to reliably reset the view state and release page resources (including any running JavaScript).

Clears this WebView so that onDraw() will draw nothing but white background, and onMeasure() will return 0 if MeasureSpec is not MeasureSpec.EXACTLY.

computeScroll

added in API level 1
void computeScroll ()

Called by a parent to request that a child update its values for mScrollX and mScrollY if necessary. This will typically be done if the child is animating a scroll using a Scroller object.

copyBackForwardList

added in API level 1
WebBackForwardList copyBackForwardList ()

Gets the WebBackForwardList for this WebView. This contains the back/forward list for use in querying each item in the history stack. This is a copy of the private WebBackForwardList so it contains only a snapshot of the current state. Multiple calls to this method may return different objects. The object returned from this method will not be updated to reflect any new state.

Returns
WebBackForwardList

createPrintDocumentAdapter

added in API level 21
PrintDocumentAdapter createPrintDocumentAdapter (String documentName)

Creates a PrintDocumentAdapter that provides the content of this WebView for printing. The adapter works by converting the WebView contents to a PDF stream. The WebView cannot be drawn during the conversion process - any such draws are undefined. It is recommended to use a dedicated off screen WebView for the printing. If necessary, an application may temporarily hide a visible WebView by using a custom PrintDocumentAdapter instance wrapped around the object returned and observing the onStart and onFinish methods. See PrintDocumentAdapter for more information.

Parameters
documentName String: The user-facing name of the printed document. See PrintDocumentInfo
Returns
PrintDocumentAdapter

createPrintDocumentAdapter

added in API level 19
PrintDocumentAdapter createPrintDocumentAdapter ()

This method was deprecated in API level 21.
Use createPrintDocumentAdapter(String) which requires user to provide a print document name.

Returns
PrintDocumentAdapter

createWebMessageChannel

added in API level 23
WebMessagePort[] createWebMessageChannel ()

Creates a message channel to communicate with JS and returns the message ports that represent the endpoints of this message channel. The HTML5 message channel functionality is described here

The returned message channels are entangled and already in started state.

Returns
WebMessagePort[] the two message ports that form the message channel.

destroy

added in API level 1
void destroy ()

Destroys the internal state of this WebView. This method should be called after this WebView has been removed from the view system. No other methods may be called on this WebView after destroy.

dispatchKeyEvent

added in API level 1
boolean dispatchKeyEvent (KeyEvent event)

Dispatch a key event to the next view on the focus path. This path runs from the top of the view tree down to the currently focused view. If this view has focus, it will dispatch to itself. Otherwise it will dispatch the next node down the focus path. This method also fires any key listeners.

Parameters
event KeyEvent: The key event to be dispatched.
Returns
boolean True if the event was handled, false otherwise.

documentHasImages

added in API level 1
void documentHasImages (Message response)

Queries the document to see if it contains any image references. The message object will be dispatched with arg1 being set to 1 if images were found and 0 if the document does not reference any images.

Parameters
response Message: the message that will be dispatched with the result

enableSlowWholeDocumentDraw

added in API level 21
void enableSlowWholeDocumentDraw ()

For apps targeting the L release, WebView has a new default behavior that reduces memory footprint and increases performance by intelligently choosing the portion of the HTML document that needs to be drawn. These optimizations are transparent to the developers. However, under certain circumstances, an App developer may want to disable them:

  1. When an app uses onDraw(Canvas) to do own drawing and accesses portions of the page that is way outside the visible portion of the page.
  2. When an app uses capturePicture() to capture a very large HTML document. Note that capturePicture is a deprecated API.
Enabling drawing the entire HTML document has a significant performance cost. This method should be called before any WebViews are created.

evaluateJavascript

added in API level 19
void evaluateJavascript (String script, 
                ValueCallback<String> resultCallback)

Asynchronously evaluates JavaScript in the context of the currently displayed page. If non-null, |resultCallback| will be invoked with any result returned from that execution. This method must be called on the UI thread and the callback will be made on the UI thread.

Compatibility note. Applications targeting N or later, JavaScript state from an empty WebView is no longer persisted across navigations like loadUrl(String). For example, global variables and functions defined before calling loadUrl(String) will not exist in the loaded page. Applications should use addJavascriptInterface(Object, String) instead to persist JavaScript objects across navigations.

Parameters
script String: the JavaScript to execute.
resultCallback ValueCallback: A callback to be invoked when the script execution completes with the result of the execution (if any). May be null if no notification of the result is required.

findAddress

added in API level 1
String findAddress (String addr)

This method was deprecated in API level O.
findAddress is deprecated. It only supports a subset of US addresses and has a high false positive rate. Calling findAddress also causes WebView to be loaded into the app, which significantly increases memory usage if the app doesn't already use WebView. Use TextClassifier instead for classifying text and finding addresses.

Gets the first substring consisting of the address of a physical location. Currently, only addresses in the United States are detected, and consist of:

  • a house number
  • a street name
  • a street type (Road, Circle, etc), either spelled out or abbreviated
  • a city name
  • a state or territory, either spelled out or two-letter abbr
  • an optional 5 digit or 9 digit zip code
All names must be correctly capitalized, and the zip code, if present, must be valid for the state. The street type must be a standard USPS spelling or abbreviation. The state or territory must also be spelled or abbreviated using USPS standards. The house number may not exceed five digits.

Parameters
addr String: the string to search for addresses
Returns
String the address, or if no address is found, null

findAll

added in API level 3
int findAll (String find)

This method was deprecated in API level 16.
findAllAsync(String) is preferred.

Finds all instances of find on the page and highlights them. Notifies any registered WebView.FindListener.

Parameters
find String: the string to find
Returns
int the number of occurrences of the String "find" that were found

See also:

findAllAsync

added in API level 16
void findAllAsync (String find)

Finds all instances of find on the page and highlights them, asynchronously. Notifies any registered WebView.FindListener. Successive calls to this will cancel any pending searches.

Parameters
find String: the string to find.

See also:

findFocus

added in API level 1
View findFocus ()

Find the view in the hierarchy rooted at this view that currently has focus.

Returns
View The view that currently has focus, or null if no focused view can be found.

findNext

added in API level 3
void findNext (boolean forward)

Highlights and scrolls to the next match found by findAllAsync(String), wrapping around page boundaries as necessary. Notifies any registered WebView.FindListener. If findAllAsync(String) has not been called yet, or if clearMatches() has been called since the last find operation, this function does nothing.

Parameters
forward boolean: the direction to search

See also:

flingScroll

added in API level 1
void flingScroll (int vx, 
                int vy)

Parameters
vx int
vy int

freeMemory

added in API level 7
void freeMemory ()

This method was deprecated in API level 19.
Memory caches are automatically dropped when no longer needed, and in response to system memory pressure.

Informs this WebView that memory is low so that it can free any available memory.

getAccessibilityClassName

added in API level 23
CharSequence getAccessibilityClassName ()

Return the class name of this object to be used for accessibility purposes. Subclasses should only override this if they are implementing something that should be seen as a completely new class of view when used by accessibility, unrelated to the class it is deriving from. This is used to fill in AccessibilityNodeInfo.setClassName.

Returns
CharSequence

getAccessibilityNodeProvider

added in API level 16
AccessibilityNodeProvider getAccessibilityNodeProvider ()

Gets the provider for managing a virtual view hierarchy rooted at this View and reported to AccessibilityServices that explore the window content.

If this method returns an instance, this instance is responsible for managing AccessibilityNodeInfos describing the virtual sub-tree rooted at this View including the one representing the View itself. Similarly the returned instance is responsible for performing accessibility actions on any virtual view or the root view itself.

If an View.AccessibilityDelegate has been specified via calling setAccessibilityDelegate(AccessibilityDelegate) its getAccessibilityNodeProvider(View) is responsible for handling this call.

Returns
AccessibilityNodeProvider The provider.

getCertificate

added in API level 1
SslCertificate getCertificate ()

Gets the SSL certificate for the main top-level page or null if there is no certificate (the site is not secure).

Returns
SslCertificate the SSL certificate for the main top-level page

getContentHeight

added in API level 1
int getContentHeight ()

Gets the height of the HTML content.

Returns
int the height of the HTML content

getCurrentWebViewPackage

PackageInfo getCurrentWebViewPackage ()

If WebView has already been loaded into the current process this method will return the package that was used to load it. Otherwise, the package that would be used if the WebView was loaded right now will be returned; this does not cause WebView to be loaded, so this information may become outdated at any time. The WebView package changes either when the current WebView package is updated, disabled, or uninstalled. It can also be changed through a Developer Setting. If the WebView package changes, any app process that has loaded WebView will be killed. The next time the app starts and loads WebView it will use the new WebView package instead.

Returns
PackageInfo the current WebView package, or null if there is none.

getFavicon

added in API level 1
Bitmap getFavicon ()

Gets the favicon for the current page. This is the favicon of the current page until WebViewClient.onReceivedIcon is called.

Returns
Bitmap the favicon for the current page

getHandler

added in API level 1
Handler getHandler ()

Returns
Handler A handler associated with the thread running the View. This handler can be used to pump events in the UI events queue.

getHitTestResult

added in API level 1
WebView.HitTestResult getHitTestResult ()

Gets a HitTestResult based on the current cursor node. If a HTML::a tag is found and the anchor has a non-JavaScript URL, the HitTestResult type is set to SRC_ANCHOR_TYPE and the URL is set in the "extra" field. If the anchor does not have a URL or if it is a JavaScript URL, the type will be UNKNOWN_TYPE and the URL has to be retrieved through requestFocusNodeHref(Message) asynchronously. If a HTML::img tag is found, the HitTestResult type is set to IMAGE_TYPE and the URL is set in the "extra" field. A type of SRC_IMAGE_ANCHOR_TYPE indicates an anchor with a URL that has an image as a child node. If a phone number is found, the HitTestResult type is set to PHONE_TYPE and the phone number is set in the "extra" field of HitTestResult. If a map address is found, the HitTestResult type is set to GEO_TYPE and the address is set in the "extra" field of HitTestResult. If an email address is found, the HitTestResult type is set to EMAIL_TYPE and the email is set in the "extra" field of HitTestResult. Otherwise, HitTestResult type is set to UNKNOWN_TYPE.

Returns
WebView.HitTestResult

getHttpAuthUsernamePassword

added in API level 1
String[] getHttpAuthUsernamePassword (String host, 
                String realm)

This method was deprecated in API level O.
Use getHttpAuthUsernamePassword(String, String) instead

Retrieves HTTP authentication credentials for a given host and realm from the WebViewDatabase instance.

Parameters
host String: the host to which the credentials apply
realm String: the realm to which the credentials apply
Returns
String[] the credentials as a String array, if found. The first element is the username and the second element is the password. Null if no credentials are found.

getOriginalUrl

added in API level 3
String getOriginalUrl ()

Gets the original URL for the current page. This is not always the same as the URL passed to WebViewClient.onPageStarted because although the load for that URL has begun, the current page may not have changed. Also, there may have been redirects resulting in a different URL to that originally requested.

Returns
String the URL that was originally requested for the current page

getProgress

added in API level 1
int getProgress ()

Gets the progress for the current page.

Returns
int the progress for the current page between 0 and 100

getRendererPriorityWaivedWhenNotVisible

boolean getRendererPriorityWaivedWhenNotVisible ()

Return whether this WebView requests a priority of RENDERER_PRIORITY_WAIVED when not visible.

Returns
boolean whether this WebView requests a priority of RENDERER_PRIORITY_WAIVED when not visible.

getRendererRequestedPriority

int getRendererRequestedPriority ()

Get the requested renderer priority for this WebView.

Returns
int the requested renderer priority policy.

getScale

added in API level 1
float getScale ()

This method was deprecated in API level 17.
This method is prone to inaccuracy due to race conditions between the web rendering and UI threads; prefer onScaleChanged(WebView, float, float).

Gets the current scale of this WebView.

Returns
float the current scale

getSettings

added in API level 1
WebSettings getSettings ()

Gets the WebSettings object used to control the settings for this WebView.

Returns
WebSettings a WebSettings object that can be used to control this WebView's settings

getTextClassifier

TextClassifier getTextClassifier ()

Returns the TextClassifier used by this WebView. If no TextClassifier has been set, this WebView uses the default set by the system.

Returns
TextClassifier

getTitle

added in API level 1
String getTitle ()

Gets the title for the current page. This is the title of the current page until WebViewClient.onReceivedTitle is called.

Returns
String the title for the current page

getUrl

added in API level 1
String getUrl ()

Gets the URL for the current page. This is not always the same as the URL passed to WebViewClient.onPageStarted because although the load for that URL has begun, the current page may not have changed.

Returns
String the URL for the current page

getWebChromeClient

WebChromeClient getWebChromeClient ()

Gets the chrome handler.

Returns
WebChromeClient the WebChromeClient, or null if not yet set

See also:

getWebViewClient

WebViewClient getWebViewClient ()

Gets the WebViewClient.

Returns
WebViewClient the WebViewClient, or a default client if not yet set

See also:

goBack

added in API level 1
void goBack ()

Goes back in the history of this WebView.

goBackOrForward

added in API level 1
void goBackOrForward (int steps)

Goes to the history item that is the number of steps away from the current item. Steps is negative if backward and positive if forward.

Parameters
steps int: the number of steps to take back or forward in the back forward list

goForward

added in API level 1
void goForward ()

Goes forward in the history of this WebView.

invokeZoomPicker

added in API level 1
void invokeZoomPicker ()

Invokes the graphical zoom picker widget for this WebView. This will result in the zoom widget appearing on the screen to control the zoom level of this WebView.

isPrivateBrowsingEnabled

added in API level 11
boolean isPrivateBrowsingEnabled ()

Gets whether private browsing is enabled in this WebView.

Returns
boolean

loadData

added in API level 1
void loadData (String data, 
                String mimeType, 
                String encoding)

Loads the given data into this WebView using a 'data' scheme URL.

Note that JavaScript's same origin policy means that script running in a page loaded using this method will be unable to access content loaded using any scheme other than 'data', including 'http(s)'. To avoid this restriction, use loadDataWithBaseURL() with an appropriate base URL.

The encoding parameter specifies whether the data is base64 or URL encoded. If the data is base64 encoded, the value of the encoding parameter must be 'base64'. For all other values of the parameter, including null, it is assumed that the data uses ASCII encoding for octets inside the range of safe URL characters and use the standard %xx hex encoding of URLs for octets outside that range. For example, '#', '%', '\', '?' should be replaced by %23, %25, %27, %3f respectively.

The 'data' scheme URL formed by this method uses the default US-ASCII charset. If you need need to set a different charset, you should form a 'data' scheme URL which explicitly specifies a charset parameter in the mediatype portion of the URL and call loadUrl(String) instead. Note that the charset obtained from the mediatype portion of a data URL always overrides that specified in the HTML or XML document itself.

Parameters
data String: a String of data in the given encoding
mimeType String: the MIME type of the data, e.g. 'text/html'
encoding String: the encoding of the data

loadDataWithBaseURL

added in API level 1
void loadDataWithBaseURL (String baseUrl, 
                String data, 
                String mimeType, 
                String encoding, 
                String historyUrl)

Loads the given data into this WebView, using baseUrl as the base URL for the content. The base URL is used both to resolve relative URLs and when applying JavaScript's same origin policy. The historyUrl is used for the history entry.

Note that content specified in this way can access local device files (via 'file' scheme URLs) only if baseUrl specifies a scheme other than 'http', 'https', 'ftp', 'ftps', 'about' or 'javascript'.

If the base URL uses the data scheme, this method is equivalent to calling loadData() and the historyUrl is ignored, and the data will be treated as part of a data: URL. If the base URL uses any other scheme, then the data will be loaded into the WebView as a plain string (i.e. not part of a data URL) and any URL-encoded entities in the string will not be decoded.

Note that the baseUrl is sent in the 'Referer' HTTP header when requesting subresources (images, etc.) of the page loaded using this method.

Parameters
baseUrl String: the URL to use as the page's base URL. If null defaults to 'about:blank'.
data String: a String of data in the given encoding
mimeType String: the MIMEType of the data, e.g. 'text/html'. If null, defaults to 'text/html'.
encoding String: the encoding of the data
historyUrl String: the URL to use as the history entry. If null defaults to 'about:blank'. If non-null, this must be a valid URL.

loadUrl

added in API level 1
void loadUrl (String url)

Loads the given URL.

Also see compatibility note on evaluateJavascript(String, ValueCallback).

Parameters
url String: the URL of the resource to load

loadUrl

added in API level 8
void loadUrl (String url, 
                Map<StringString> additionalHttpHeaders)

Loads the given URL with the specified additional HTTP headers.

Also see compatibility note on evaluateJavascript(String, ValueCallback).

Parameters
url String: the URL of the resource to load
additionalHttpHeaders Map: the additional headers to be used in the HTTP request for this URL, specified as a map from name to value. Note that if this map contains any of the headers that are set by default by this WebView, such as those controlling caching, accept types or the User-Agent, their values may be overridden by this WebView's defaults.

onChildViewAdded

added in API level 1
void onChildViewAdded (View parent, 
                View child)

This method was deprecated in API level 8.
WebView no longer needs to implement ViewGroup.OnHierarchyChangeListener. This method does nothing now.

Called when a new child is added to a parent view.

Parameters
parent View: the view in which a child was added
child View: the new child view added in the hierarchy

onChildViewRemoved

added in API level 1
void onChildViewRemoved (View p, 
                View child)

This method was deprecated in API level 8.
WebView no longer needs to implement ViewGroup.OnHierarchyChangeListener. This method does nothing now.

Called when a child is removed from a parent view.

Parameters
p View: the view from which the child was removed
child View: the child removed from the hierarchy

onCreateInputConnection

added in API level 3
InputConnection onCreateInputConnection (EditorInfo outAttrs)

Creates a new InputConnection for an InputMethod to interact with the WebView. This is similar to onCreateInputConnection(EditorInfo) but note that WebView calls InputConnection methods on a thread other than the UI thread. If these methods are overridden, then the overriding methods should respect thread restrictions when calling View methods or accessing data.

Parameters
outAttrs EditorInfo: Fill in with attribute information about the connection.
Returns
InputConnection

onDragEvent

added in API level 11
boolean onDragEvent (DragEvent event)

Handles drag events sent by the system following a call to startDragAndDrop().

When the system calls this method, it passes a DragEvent object. A call to getAction() returns one of the action type constants defined in DragEvent. The method uses these to determine what is happening in the drag and drop operation.

Parameters
event DragEvent: The DragEvent sent by the system. The getAction() method returns an action type constant defined in DragEvent, indicating the type of drag event represented by this object.
Returns
boolean true if the method was successful, otherwise false.

The method should return true in response to an action type of ACTION_DRAG_STARTED to receive drag events for the current operation.

The method should also return true in response to an action type of ACTION_DROP if it consumed the drop, or false if it didn't.

For all other events, the return value is ignored.

onFinishTemporaryDetach

added in API level 3
void onFinishTemporaryDetach ()

Called after onStartTemporaryDetach() when the container is done changing the view.

onGenericMotionEvent

added in API level 12
boolean onGenericMotionEvent (MotionEvent event)

Implement this method to handle generic motion events.

Generic motion events describe joystick movements, mouse hovers, track pad touches, scroll wheel movements and other input events. The source of the motion event specifies the class of input that was received. Implementations of this method must examine the bits in the source before processing the event. The following code example shows how this is done.

Generic motion events with source class SOURCE_CLASS_POINTER are delivered to the view under the pointer. All other generic motion events are delivered to the focused view.

 public boolean onGenericMotionEvent(MotionEvent event) {
     if (event.isFromSource(InputDevice.SOURCE_CLASS_JOYSTICK)) {
         if (event.getAction() == MotionEvent.ACTION_MOVE) {
             // process the joystick movement...
             return true;
         }
     }
     if (event.isFromSource(InputDevice.SOURCE_CLASS_POINTER)) {
         switch (event.getAction()) {
             case MotionEvent.ACTION_HOVER_MOVE:
                 // process the mouse hover movement...
                 return true;
             case MotionEvent.ACTION_SCROLL:
                 // process the scroll wheel movement...
                 return true;
         }
     }
     return super.onGenericMotionEvent(event);
 }

Parameters
event MotionEvent: The generic motion event being processed.
Returns
boolean True if the event was handled, false otherwise.

onGlobalFocusChanged

added in API level 1
void onGlobalFocusChanged (View oldFocus, 
                View newFocus)

This method was deprecated in API level 3.
WebView should not have implemented ViewTreeObserver.OnGlobalFocusChangeListener. This method does nothing now.

Callback method to be invoked when the focus changes in the view tree. When the view tree transitions from touch mode to non-touch mode, oldFocus is null. When the view tree transitions from non-touch mode to touch mode, newFocus is null. When focus changes in non-touch mode (without transition from or to touch mode) either oldFocus or newFocus can be null.

Parameters
oldFocus View: The previously focused view, if any.
newFocus View: The newly focused View, if any.

onHoverEvent

added in API level 14
boolean onHoverEvent (MotionEvent event)

Implement this method to handle hover events.

This method is called whenever a pointer is hovering into, over, or out of the bounds of a view and the view is not currently being touched. Hover events are represented as pointer events with action ACTION_HOVER_ENTER, ACTION_HOVER_MOVE, or ACTION_HOVER_EXIT.

  • The view receives a hover event with action ACTION_HOVER_ENTER when the pointer enters the bounds of the view.
  • The view receives a hover event with action ACTION_HOVER_MOVE when the pointer has already entered the bounds of the view and has moved.
  • The view receives a hover event with action ACTION_HOVER_EXIT when the pointer has exited the bounds of the view or when the pointer is about to go down due to a button click, tap, or similar user action that causes the view to be touched.

The view should implement this method to return true to indicate that it is handling the hover event, such as by changing its drawable state.

The default implementation calls setHovered(boolean) to update the hovered state of the view when a hover enter or hover exit event is received, if the view is enabled and is clickable. The default implementation also sends hover accessibility events.

Parameters
event MotionEvent: The motion event that describes the hover.
Returns
boolean True if the view handled the hover event.

onKeyDown

added in API level 1
boolean onKeyDown (int keyCode, 
                KeyEvent event)

Default implementation of KeyEvent.Callback.onKeyDown(): perform press of the view when KEYCODE_DPAD_CENTER or KEYCODE_ENTER is released, if the view is enabled and clickable.

Key presses in software keyboards will generally NOT trigger this listener, although some may elect to do so in some situations. Do not rely on this to catch software key presses.

Parameters
keyCode int: a key code that represents the button pressed, from KeyEvent
event KeyEvent: the KeyEvent object that defines the button action
Returns
boolean If you handled the event, return true. If you want to allow the event to be handled by the next receiver, return false.

onKeyMultiple

added in API level 1
boolean onKeyMultiple (int keyCode, 
                int repeatCount, 
                KeyEvent event)

Default implementation of KeyEvent.Callback.onKeyMultiple(): always returns false (doesn't handle the event).

Key presses in software keyboards will generally NOT trigger this listener, although some may elect to do so in some situations. Do not rely on this to catch software key presses.

Parameters
keyCode int: A key code that represents the button pressed, from KeyEvent.
repeatCount int: The number of times the action was made.
event KeyEvent: The KeyEvent object that defines the button action.
Returns
boolean If you handled the event, return true. If you want to allow the event to be handled by the next receiver, return false.

onKeyUp

added in API level 1
boolean onKeyUp (int keyCode, 
                KeyEvent event)

Default implementation of KeyEvent.Callback.onKeyUp(): perform clicking of the view when KEYCODE_DPAD_CENTER, KEYCODE_ENTER or KEYCODE_SPACE is released.

Key presses in software keyboards will generally NOT trigger this listener, although some may elect to do so in some situations. Do not rely on this to catch software key presses.

Parameters
keyCode int: A key code that represents the button pressed, from KeyEvent.
event KeyEvent: The KeyEvent object that defines the button action.
Returns
boolean If you handled the event, return true. If you want to allow the event to be handled by the next receiver, return false.

onMovedToDisplay

void onMovedToDisplay (int displayId, 
                Configuration config)

Called by the system when the hosting activity is moved from one display to another without recreation. This means that the activity is declared to handle all changes to configuration that happened when it was switched to another display, so it wasn't destroyed and created again.

This call will be followed by onConfigurationChanged(Configuration) if the applied configuration actually changed. It is up to app developer to choose whether to handle the change in this method or in the following onConfigurationChanged(Configuration) call.

Use this callback to track changes to the displays if some functionality relies on an association with some display properties.

Parameters
displayId int: The id of the display to which the view was moved.
config Configuration: Configuration of the resources on new display after move.

onPause

added in API level 11
void onPause ()

Does a best-effort attempt to pause any processing that can be paused safely, such as animations and geolocation. Note that this call does not pause JavaScript. To pause JavaScript globally, use pauseTimers(). To resume WebView, call onResume().

onProvideAutofillVirtualStructure

void onProvideAutofillVirtualStructure (ViewStructure structure, 
                int flags)

Called when assist structure is being retrieved from a view as part of an autofill request to generate additional virtual structure under this view.

The default implementation uses getAccessibilityNodeProvider() to try to generate this from the view's virtual accessibility nodes, if any. You can override this for a more optimal implementation providing this data.

When implementing this method, subclasses must follow the rules below:

  1. Also implement autofill(SparseArray) to autofill the virtual children.
  2. Call notifyViewEntered(View) and notifyViewExited(View, int) when the focus inside the view changed.
  3. Call notifyValueChanged(View, int, AutofillValue) when the value of a child changed.
  4. Call commit() when the autofill context of the view structure changed and you want the current autofill interaction if such to be commited.
  5. Call cancel() ()} when the autofill context of the view structure changed and you want the current autofill interaction if such to be cancelled.

The ViewStructure traditionally represents a View, while for web pages it represent HTML nodes. Hence, it's necessary to "map" the HTML properties in a way that is understood by the AutofillService implementations:

  1. If the Android SDK provides a similar View, then should be set with the fully-qualified class name of such view.
  2. The W3C autofill field (autocomplete tag attribute) maps to setAutofillHints(String[]).
  3. The type attribute of INPUT tags maps to setInputType(int).
  4. The value attribute maps to setText(CharSequence).
  5. The placeholder attribute maps to setHint(CharSequence).
  6. setDataIsSensitive(boolean) whould only be called with true for form fields whose value attribute was not pre-loaded.
  7. Other HTML attributes can be represented through setHtmlInfo(android.view.ViewStructure.HtmlInfo).

Example1: an HTML form with 2 fields for username and password.

    
    
 

Would map to:

     int index = structure.addChildCount(2);
     ViewStructure username = structure.newChild(index);
     username.setAutofillId(structure, 1); // id 1 - first child
     username.setClassName("input");
     username.setInputType("android.widget.EditText");
     username.setAutofillHints("username");
     username.setHtmlInfo(child.newHtmlInfoBuilder("input")
         .addAttribute("name", "username")
         .addAttribute("id", "user")
         .build());
     username.setHint("Email or username");
     username.setAutofillType(View.AUTOFILL_TYPE_TEXT);
     username.setAutofillValue(AutofillValue.forText("mr.sparkle"));
     username.setText("mr.sparkle");
     username.setDataIsSensitive(true); // Contains real username, which is sensitive

     ViewStructure password = structure.newChild(index + 1);
     username.setAutofillId(structure, 2); // id 2 - second child
     password.setInputType("android.widget.EditText");
     password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
     password.setAutofillHints("current-password");
     password.setHtmlInfo(child.newHtmlInfoBuilder("input")
         .addAttribute("name", "password")
         .addAttribute("id", "pass")
         .build());
     password.setHint("Password");
     password.setAutofillType(View.AUTOFILL_TYPE_TEXT);
     password.setDataIsSensitive(false); // Value is not set
 

Example2: an IFRAME tag.