Android中WebView点击事件的拦截跳转到原生的界面
来源:互联网 发布:常用的机械制图软件 编辑:程序博客网 时间:2024/05/13 08:27
我们可以知道,android中嵌入WebView可以快速实现app开发上线,这个时候H5 和webview之间的交互就变得十分重要了,到目前为止交互的形式遇到的有三种:
第一:拦截H5界面的控件,具体实现看我前面的一篇博客:
http://blog.csdn.net/qq_33923079/article/details/52869787;
第二:拦截H5界面的点击事件,我们都是知道H5界面的点击事件说白了就是请求一个新的url(到目前为止我是这样理解的),那么说白了就是去拦截一个url,这就是本篇博客所要讲述的;
第三:为WebView的每一次网络请求的url添加标示位(参数),这将在后面的博客中讲述。
下面我们来看一下如何去拦截H5界面的点击事件:
首先是需要设置Web视图:
// 设置Web视图webview.setWebViewClient(new MyWebViewClient());
下面我们来看看MyWebViewClient这个内部类:
// 监听 所有点击的链接,如果拦截到我们需要的,就跳转到相对应的页面。private class MyWebViewClient extends WebViewClient {@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {//这里进行url拦截if (url != null && url.contains(/m/phoneRegiste.do)) {Intent intent = new Intent(PublicWebView.this, RegisterByPhone.class);PublicWebView.this.startActivity(intent);finish();return true;} return super.shouldOverrideUrlLoading(view, url);}@Overridepublic void onPageFinished(WebView view, String url) {view.getSettings().setJavaScriptEnabled(true);super.onPageFinished(view, url);}}
这样就行了,下面送上福利哦:
public class PublicWebView extends Activity {private WebView webview;private ImageButton back;private LinearLayout public_webview_top;private boolean showTitle;private ProgressBar progressBar;@SuppressLint(JavascriptInterface)@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.public_webview);Intent intent = getIntent();String url = intent.getStringExtra(url);String title = intent.getStringExtra(title);showTitle = intent.getBooleanExtra(show_title, true);public_webview_top = (LinearLayout) findViewById(R.id.public_webview_top);if (showTitle) {public_webview_top.setVisibility(View.VISIBLE);} else {public_webview_top.setVisibility(View.GONE);}TextView titletv = (TextView) findViewById(R.id.public_webview_title);titletv.setText(title);progressBar = (ProgressBar) findViewById(R.id.public_webview_progressbar);webview = (WebView) findViewById(R.id.public_webview_webview);// 加载需要显示的网页webview.addJavascriptInterface(new JavascriptInterface(PublicWebView.this), Phoenix_Android);webview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);// 设置WebView属性,能够执行Javascript脚本webview.getSettings().setJavaScriptEnabled(true);// 加载需要显示的网页webview.loadUrl(url);// 设置Web视图webview.setWebViewClient(new MyWebViewClient());webview.setWebChromeClient(new WebChromeClient() {@Overridepublic void onProgressChanged(WebView view, int newProgress) {if (newProgress == 100) {progressBar.setVisibility(View.GONE);} else{progressBar.setVisibility(View.VISIBLE);}super.onProgressChanged(view, newProgress);}});back = (ImageButton) findViewById(R.id.public_webview_back);back.setOnClickListener(new BackListener(PublicWebView.this, null, 1));}@SuppressLint(NewApi)public class JavascriptInterface {@SuppressWarnings(unused)private Context context;public JavascriptInterface(Context context) {this.context = context;}public void back(String module, int status, String place) {reFreshBlance();if (status == -1) { // 用户取消了return;} else if (status == 0) {Toast.makeText(PublicWebView.this, 充值请求失败,请稍后重试..., Toast.LENGTH_SHORT).show();return;} else if (status == 1) {// 充值请求成功reFreshBlance();// 1.用户中心进来的有两个参数// a.bet参数是返回购彩界面// b.userCenter返回用户中心}}}// 监听 所有点击的链接,如果拦截到我们需要的,就跳转到相对应的页面。private class MyWebViewClient extends WebViewClient {@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {System.out.println(----------------------shouldOverrideUrlLoading 。。 url: + url);if (url != null && url.contains(/m/phoneRegiste.do)) {Intent intent = new Intent(PublicWebView.this, RegisterByPhone.class);PublicWebView.this.startActivity(intent);finish();return true;} return super.shouldOverrideUrlLoading(view, url);}@Overridepublic void onPageFinished(WebView view, String url) {view.getSettings().setJavaScriptEnabled(true);super.onPageFinished(view, url);}}// 覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法public boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK && webview.canGoBack()) {// webview.goBack();// 返回前一个页面finish();return true;}return super.onKeyDown(keyCode, event);}}
0 0
- Android中WebView点击事件的拦截跳转到原生的界面
- Android中WebView点击事件的拦截跳转到原生的界面
- Android 以webview的方式集成Dcloud 5+SDK 实现携带数据跳转原生界面
- android重写webview长按时选择文字然后点击搜索按钮的事件,默认是chrome接受点击事件,现在跳转到360搜索页面
- 5+webview跳转到Android原生activity
- Android---webview实现网页的点击跳转
- react native 中webview内的点击事件传到外部原生调用
- android webview点击拦截事件处理判断
- 点击Android webview的链接,屏蔽其它浏览器,只是在原来的webview中跳转
- 解决Android中WebView跳转到浏览器的问题
- WebView拦截点击的url
- Android内嵌网页webview点击其中的链接跳转到我们应用内的Activity
- webview中实现当点击网页中的按钮的时候,跳转到本地的activity。
- UITextView设置超链接,点击跳转到应用内的webView
- webView 点击连接如何不让跳转到系统的 浏览器
- WebView点击里面的按钮跳转到Activity
- 跳转到webview界面
- android中跳转到系统管理应用程序界面的方法
- 使用快速权重来关注最近的过去
- android google map api 入门 一
- Wireshark 分析ping报文
- 实现同步PV操作模拟生产和消费的基本程序代码
- IAR库文件生成及使用方法
- Android中WebView点击事件的拦截跳转到原生的界面
- HTML 基础知识
- java正则表达式
- C/C++ 图像处理(14)------图像の轮廓填充
- 最优装
- HTML的设计与应用
- ram flash和eeprom的区别和作用
- struct和typedef struct彻底明白了
- 直方图均衡化的英文名称是Histogram Equalization.