Android 加载 自己的H5,跳到内部浏览器
来源:互联网 发布:mac 文件权限 编辑:程序博客网 时间:2024/06/06 02:38
package xxximport android.annotation.SuppressLint;import android.content.Context;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.os.Message;import android.support.annotation.Nullable;import android.view.View;import android.webkit.JavascriptInterface;import android.webkit.WebChromeClient;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.ProgressBar;import android.widget.RelativeLayout;import java.util.ArrayList;public class SingleWebViewFragment extends BaseWebViewFragment { private WebView mWebView; private ProgressBar mProgressBar; private String url = ""; private String title = ""; private String shareSp; private String shareContent; private ArrayList<String> loadHistoryUrls = new ArrayList<String>(); public SingleWebViewFragment() { } private Bundle inputBundle; @SuppressLint("ValidFragment") public SingleWebViewFragment(Bundle bundle) { this.inputBundle = bundle; } @Override protected boolean shouldOverrideUrl(WebView view, String url) { if (url.startsWith("tel:")) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(intent); } else if (url.startsWith("http:") || url.startsWith("https:")) { view.loadUrl(url); } view.loadUrl(url); return true; } @Override public void onAttach(Context context) { super.onAttach(context); } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle bundle = getArguments(); if (bundle == null && inputBundle != null) { bundle = inputBundle; } url = bundle.getString(UIHelper.HF_URL_KEY); title = bundle.getString(UIHelper.HF_TITLE_KEY); TLog.log("title", title); //设置数据的操作 BaseActivity activity = (BaseActivity) getCurActivity(); activity.setTitle(title); } @Override protected int getLayoutRes() { return R.layout.webview_single_page; } @Override protected void initView(View view) { mWebView = (WebView) view.findViewById(R.id.webView); mProgressBar = (ProgressBar) view.findViewById(R.id.myProgressBar); setWebView(); } @JavascriptInterface @SuppressLint({"SetJavaScriptEnabled", "JavascriptInterface"}) private void setWebView() { initWebView(mWebView); mWebView.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { if (newProgress == 100) { mProgressBar.setVisibility(View.GONE); } else { if (View.GONE == mProgressBar.getVisibility()) { mProgressBar.setVisibility(View.VISIBLE); } mProgressBar.setProgress(newProgress); } super.onProgressChanged(view, newProgress); } @Override public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) { //h5 target为blank时生效 WebView newWebView = new WebView(getContext()); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT); newWebView.setLayoutParams(params); WebSettings webSettings = newWebView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setSupportZoom(false); webSettings.setBuiltInZoomControls(false);// 设置是否支持缩放 webSettings.setSaveFormData(false); webSettings.setDefaultTextEncodingName("utf-8"); webSettings.setLoadsImagesAutomatically(true); //支持自动加载图片 webSettings.setUseWideViewPort(true); //设置webview推荐使用的窗口,使html界面自适应屏幕 webSettings.setLoadWithOverviewMode(true); webSettings.setAppCacheEnabled(true); webSettings.setSupportMultipleWindows(true); view.addView(newWebView); WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; transport.setWebView(newWebView); resultMsg.sendToTarget(); /* * true ,则说明由应用的代码处理该 url,WebView 不处理。 * false,则说明由 WebView 处理该 url,即用 WebView 加载该 url。 * */ return true; } }); mWebView.loadUrl(url); mWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.contains("in")) { UIHelper.xxx(getContext()); return true; }else if (url.contains("verify")){ UIHelper.xxx(getContext(), 1); return true; }else { } return false; } }); } @Override protected void onWebViewFailure() { super.onWebViewFailure(); getActivity().finish(); } @Override protected void onWebViewSuccess() { super.onWebViewSuccess(); } @Override public boolean onBackPressed() { if (mWebView.canGoBack() && TDevice.hasInternet()) { mWebView.goBack(); return true;//以前是true } return super.onBackPressed(); } @Override public void onDestroy() { super.onDestroy(); }}
阅读全文
1 0
- Android 加载 自己的H5,跳到内部浏览器
- android webView加载h5 h5的js代码不执行
- android webview 加载h5
- android实现自己的浏览器
- android实现自己的浏览器
- android实现自己的浏览器
- 页面加载时浏览器内部操作的顺序
- 由浏览器跳转到自己的app
- QML开发简单浏览器(加载H5)
- H5的预加载
- 如何在app内部跳转到自己的app
- Android开发---加载h5界面
- android 的webView加载h5,和h5的交互(java和JavaScript的交互)
- android webview加载H5页面丢失cookie信息的解决办法
- Android中使用WebView加载H5页面的方法
- android加载本地asset文件夹下的h5界面
- 安卓Android WebView 加载H5的解决问题
- android WebView加载H5去地址栏的两种方式
- Hadoop集群共享给多用户
- Redis异常分析-输出缓冲区过大
- R语言计算频数和频率
- 【kubernetes/k8s源码分析】kubelet源码分析-statusManager与probeManager
- Apache Common-pool2对象池分析和应用
- Android 加载 自己的H5,跳到内部浏览器
- python实现杨辉三角
- zigbee单播、组播、广播
- React Native报错unddefined is not an object(evaluating ‘_reactnative.propTypes’)解决办法
- java.lang.IllegalArgumentException: Cannot convert value of type [] to required type [] for propert
- spring boot eurka+ribbon+zuul实现负载均衡
- 关于Solidworks实体测量
- caffe:使用C++来提取任意一张图片的特征
- 小说生成对抗网络GANs