If you want to deliver a web
application (or just a web page) as a part of a client application, you can do
it using
WebView
. The WebView
class is an extension
of Android's View
class that allows you to
display web pages as a part of your activity layout. It does not
include any features of a fully developed web browser, such as navigation
controls or an address bar. All that WebView
does, by default, is
show a web page.
A common scenario in which using
WebView
is helpful is when
you want to provide information in your application that you might need to
update, such as an end-user agreement or a user guide. Within your Android
application, you can create an Activity
that contains a WebView
, then use that to
display your document that's hosted online.
This document shows you how to get
started with
WebView
and how to do some
additional things, such as handle page navigation and bind JavaScript from your
web page to client-side code in your Android application.
To add a WebView to your Application, simply include
the <WebView> element in your activity layout. For example, here's a
layout file in which the WebView fills the screen:
<?xml version="1.0"
encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
WebView myWebView = (WebView)
findViewById(R.id.webview);
myWebView.loadUrl("http://www.example.com");
myWebView.loadUrl("http://www.example.com");
Before this will
work, however, your application must have access to the Internet. To get
Internet access, request the INTERNET permission in your manifest file.
For example:
<manifest ... >
<uses-permission android:name="android.permission.INTERNET" />
...
</manifest>
<uses-permission android:name="android.permission.INTERNET" />
...
</manifest>
That's all you
need for a basic WebView that displays a web page.
JavaScript is
disabled in a WebView by default. You can enable it
through the WebSettings attached to your WebView. You can retrieve WebSettings with getSettings(), then enable JavaScript with setJavaScriptEnabled().
For example:
WebView myWebView = (WebView)
findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
WebSettings provides access to a variety of
other settings that you might find useful. For example, if you're developing a
web application that's designed specifically for the WebView in your Android application, then
you can define a custom user agent string with setUserAgentString(), then query the custom
user agent in your web page to verify that the client requesting your web page
is actually your Android application.
from your Android
SDK tools/ directory
WebView
in your Android application,
you can create interfaces between your JavaScript code and client-side Android
code. For example, your JavaScript code can call a method in your Android code
to display a Dialog
, instead of using
JavaScript's alert()
function.To bind a new interface between your JavaScript and Android code, call
addJavascriptInterface()
,
passing it a class instance to bind to your JavaScript and an interface name
that your JavaScript can call to access the class.For example, you can include the following class in your Android application:
public class WebAppInterface { Context mContext; /** Instantiate the interface and set the context */ WebAppInterface(Context c) { mContext = c; } /** Show a toast from the web page */ @JavascriptInterface public void showToast(String toast) { Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); } }
Example webview:
main.xml:
<?xml version="1.0"
encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
Activity:
package com.inventiveera.webview;
import android.app.Activity;
import android.os.Bundle;
import
android.webkit.WebSettings;
import android.webkit.WebView;
public class WebViewActivity extends Activity {
/** Called when the
activity is first created. */
WebView
webview;
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webview = (WebView)
findViewById(R.id.webview);
webview.loadUrl("http://aspdotnetsiva.blogspot.in/");
WebSettings
ws = webview.getSettings();
ws.setJavaScriptEnabled(true);
ws.setBuiltInZoomControls(true);
ws.setMinimumFontSize(20);
}
}
mainifest.xml:
<?xml version="1.0"
encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.inventiveera.webview"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10"
/>
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".WebViewActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN"
/>
<category android:name="android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
</application>
</manifest>
No comments:
Post a Comment