Android中WebView,打开第三方应用的问题
来源:互联网 发布:建筑图js 编辑:程序博客网 时间:2024/04/28 05:30
可以通过网页打开第三方应用,这个iOS和Android都可以做到,通过自定义的schema。说这个的网上有一大堆,这里就不赘述了。
比如,乐视手机网站,有app专享片源,你使用UC浏览器打开他的网页,点击指定节目的时候,就会弹出他的客户端,开始播放节目。
观察点击海报的url,是形如“letv://xxxxxx/xxxxxx”的跳转地址,显然不是一个网页,是没办法直接跳转的。
搜狐视频网页也是一样的。
那么问题来了,UC可以做到,但是自己的WebView不行。
使用WebView加载“letv://xxxxxx/xxxxxx”这个地址时,会直接报错,说这个url打不开。
显然时应该对非http开头的url做一些处理的。但应该在哪里加处理呢?
查官方的API, 如果希望点击链接由自己处理,而不是新开Android的系统browser中响应该链接。
可以给WebView添加一个事件监听对象(WebViewClient)并重写其中的一些方法:shouldOverrideUrlLoading:对网页中超链接按钮的响应。
总体思想就是拿到url之后,先自己过滤一下,可以自定义一些处理方式。
如果自己处理了,就return true,后续处理就不会再管这个url了;否则返回false,交给后面继续执行。类似MediaPlayer的onError。
好吧,就把我处理的代码片段贴上来吧,以作备忘。
mWebView.setWebViewClient(new WebViewClient() {public boolean shouldOverrideUrlLoading(WebView view, String url) {Log.d("shouldOverrideUrlLoading", url);// 处理自定义schemeif (!url.startsWith("http")) {Log.i("shouldOverrideUrlLoading", "处理自定义scheme");Toast.makeText(mContext, "需要下载客户端收看", Toast.LENGTH_LONG).show();try {// 以下固定写法final Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(url));intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK| Intent.FLAG_ACTIVITY_SINGLE_TOP);mContext.startActivity(intent);} catch (Exception e) {// 防止没有安装的情况e.printStackTrace();}return true;}return false;}@Overridepublic void onReceivedError(WebView view, int errorCode,String description, String failingUrl) {// Auto-generated method stubsuper.onReceivedError(view, errorCode, description, failingUrl);}@Overridepublic void onPageFinished(WebView view, String url) {// Auto-generated method stubsuper.onPageFinished(view, url);}@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {// Auto-generated method stubsuper.onPageStarted(view, url, favicon);}});
0 0
- Android中WebView,打开第三方应用的问题
- Android中WebView,打开第三方应用的问题
- Android中WebView,打开第三方应用的问题
- Android中WebView,打开第三方应用的问题
- Android开发之如何在WebView中点击链接使用自身打开(解决出现的选择使用第三方应用的问题)
- Android 解决webview中下载第三方APP的问题
- android中WebView关闭打开第三方浏览器
- Android 打开第三方应用的方法
- Android 第三方应用的打开
- Android当前应用中打开第三方应用
- android 打开第三方应用的几种方式
- Android程序打开第三方应用的一个解决方案
- Android端 通过第三方应用打开文档的方式
- UIDocumentInteractionController 第三方应用中打开自己的文件 方法
- UIDocumentInteractionController 第三方应用中打开自己的文件 方法
- 怎么在第三方应用中打开自己的APP
- Android应用打开第三方软件
- 打开第三方应用
- SQL2012 新增实用函数
- 《创客》第十二章读后整理和感悟
- iOS取消自动锁屏
- Android中ContentProvider(内容题供着)1访问系统的内容提供者
- Plotclock
- Android中WebView,打开第三方应用的问题
- DB之—— sql中 float类型和 java 中float 类型
- oracle 诊断利器之一—Procwatcher
- 说说我眼中的IT界加班文化
- DedeCMS提示Maximum execution time of 30 seconds exceeded in解决办法
- java学习day12
- c# Yield return之简单方法实现迭代器和集合初始化器
- Bitmap与DrawAble与byte[]与InputStream之间的转换工具类
- maven update后,还是找不到包提示