package com.example.jingbin.cloudreader.view.webview.config;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.example.jingbin.cloudreader.utils.CheckNetwork;
import com.example.jingbin.cloudreader.view.webview.WebViewActivity;
/**
* Created by jingbin on 2016/11/17.
* 监听网页链接:
* - 优酷视频直接跳到自带浏览器
* - 根据标识:打电话、发短信、发邮件
* - 进度条的显示
* - 添加javascript监听
*/
public class MyWebViewClient extends WebViewClient {
private IWebPageView mIWebPageView;
private WebViewActivity mActivity;
public MyWebViewClient(IWebPageView mIWebPageView) {
this.mIWebPageView = mIWebPageView;
mActivity = (WebViewActivity) mIWebPageView;
}
@SuppressWarnings("deprecation")
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 优酷视频跳转浏览器播放
if (url.startsWith("http://v.youku.com/")) {
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addCategory("android.intent.category.BROWSABLE");
Uri content_url = Uri.parse(url);
intent.setData(content_url);
mActivity.startActivity(intent);
return true;
// 电话、短信、邮箱
} else if (url.startsWith(WebView.SCHEME_TEL) || url.startsWith("sms:") || url.startsWith(WebView.SCHEME_MAILTO)) {
try {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
mActivity.startActivity(intent);
} catch (ActivityNotFoundException ignored) {
}
return true;
}
mIWebPageView.startProgress();
view.loadUrl(url);
return false;
}
@Override
public void onPageFinished(WebView view, String url) {
if (mActivity.mProgress90) {
mIWebPageView.hindProgressBar();
} else {
mActivity.mPageFinish = true;
}
if (!CheckNetwork.isNetworkConnected(mActivity)) {
mIWebPageView.hindProgressBar();
}
// html加载完成之后,添加监听图片的点击js函数
mIWebPageView.addImageClickListener();
super.onPageFinished(view, url);
}
// 视频全屏播放按返回页面被放大的问题
@Override
public void onScaleChanged(WebView view, float oldScale, float newScale) {
super.onScaleChanged(view, oldScale, newScale);
if (newScale - oldScale > 7) {
view.setInitialScale((int) (oldScale / newScale * 100)); //异常放大,缩回去。
}
}
}