android中WebView 的使用

WebView在日常的使用中主要功能

1.加载网页

2.WebView 是否允许执行JavaScript

3.设置WebView是否缓存网页数据

4.JavaScript本地方法

5.启动本地app 

这里需要注意在AndroidManifest.xml 文件中的要启动的activity中添加

   <activity
            android:name="你的activity"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.VIEW" >
                </action>
                <category android:name="android.intent.category.DEFAULT" >
                </category>
                <category android:name="android.intent.category.BROWSABLE" >
                </category>

<!--  data中添加和html上要跳转的对应   如本例中就需要在html中添加  m://test.cn/   当然你也可以在连接中添加参数 m://test.cn/?arg1=&arg2=-->
                <data
                    android:host="test.cn"
                    android:scheme="m" >
                </data>
            </intent-filter>
        </activity>

然后在处理不是http开头的网址时

Uri uri = Uri.parse(url);
Intent intent = new Intent();
intent.setData(uri);
context.startActivity(intent);
在需要跳转的activity中根据参数处理你需要处理的事情

Uri uri = getIntent().getData();
//参数1
String arg1=uri.getQueryParameter("arg1");
//参数2
String arg2=uri.getQueryParameter("arg2");



以下为本人使用的WebView类

/**
* 
* @author 王勇鹏
* @date 2015-3-18
* @Description WebView控制器
*/
public class WebViewController {

private static final String TAG = "WebViewController";

private WebView mWebView;

private Context context;

private boolean isFristLoad = true;

public WebViewController(WebView webView, Context context) {
this.mWebView = webView;

this.context = context;
}

public void addWebChromeClient(final LinearLayout loadingLayout) {
mWebView.setWebViewClient(new WebViewClient() {
/**
* 自定义网页加载
*/
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//当网址不是Http开头的可能为启动本地应用
if (url.startsWith("http")) {
if (isFristLoad) {
isFristLoad = false;
mWebView.loadUrl(url);
} else {
Intent intent = new Intent();
intent.putExtra("URL", url);
intent.putExtra("Title", view.getTitle());
intent.setClass(context, WebViewActivity.class);
context.startActivity(intent);
}
return true;
} else {

Uri uri = Uri.parse(url);
Intent intent = new Intent();
intent.setData(uri);
context.startActivity(intent);
return true;
}

}

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

Log.e(TAG, "onPageStarted");

loadingLayout.setVisibility(View.VISIBLE); // 显示加载界面
}

@Override
public void onPageFinished(WebView view, String url) {

String title = view.getTitle();

Log.e(TAG, "onPageFinished WebView title=" + title);

loadingLayout.setVisibility(View.GONE); // 隐藏加载界面
}

@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
Log.e(TAG, "加载时出错!");
}

});
}

@SuppressWarnings("deprecation")
@SuppressLint("SetJavaScriptEnabled")
public void initWebView() {
mWebView.getSettings().setJavaScriptEnabled(true);

mWebView.getSettings().setRenderPriority(RenderPriority.HIGH);
// 不使用缓存,只从网络获取数据
mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
if (AppFileDir.isExistSDCard()) {

// 根据cache-control决定是否从网络上取数据
mWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);

// 设置 缓存模式
// 开启 DOM storage API 功能
mWebView.getSettings().setDomStorageEnabled(true);

// 开启 database storage API 功能
mWebView.getSettings().setDatabaseEnabled(true);

String cacheDirPath = AppFileDir.WEBVIEW_CACHE_DIR;

FileUtils.createFileDir(cacheDirPath);

Log.i(TAG, "cacheDirPath=" + cacheDirPath);

// 设置数据库缓存路径
mWebView.getSettings().setDatabasePath(cacheDirPath);

// 设置 Application Caches 缓存目录
mWebView.getSettings().setAppCachePath(cacheDirPath);

// 开启 Application Caches 功能
mWebView.getSettings().setAppCacheEnabled(true);
}
}
//添加javaScript接口
public void putJavascriptInterface(String[] interfaceNames, Object object) {
for (int i = 0; i < interfaceNames.length; i++) {
mWebView.addJavascriptInterface(object, interfaceNames[i]);

}

}

}

controller = new WebViewController(mWebView, WebViewActivity.this);
controller.initWebView();
controller.addWebChromeClient(loadingLayout);










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值