oschina-app源码解析-webview处理超链接
2014-04-03 10:12
417 查看
前面已经介绍,oschina-app源码解析-webview重组html,在这个过程中还有些细节性的问题,分别介绍下,首先介绍下webview来处理超链接。
方法就是实现WebViewClient里的 shouldOverrideUrlLoading的方法,来处理超链接被点击后的具体操作,oschina-app操作:
1、分析url,获取资源类型、和资源id
2、根据资源类型,跳转到对应的资源内容页面,并根据id加载数据。
上代码:
WebViewClient实现:
根据url实现跳转:
URLs urls = URLs.parseURL(url);这句话其实就是解析url为两个参数:链接类型,和对应新闻条目的ID,这个代码根据不同url进行不同分析。
方法就是实现WebViewClient里的 shouldOverrideUrlLoading的方法,来处理超链接被点击后的具体操作,oschina-app操作:
1、分析url,获取资源类型、和资源id
2、根据资源类型,跳转到对应的资源内容页面,并根据id加载数据。
上代码:
mWebView.setWebViewClient(UIHelper.getWebViewClient());
WebViewClient实现:
/** * 获取webviewClient对象 * * @return */ public static WebViewClient getWebViewClient() { return new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { showUrlRedirect(view.getContext(), url); return true; } }; }
根据url实现跳转:
/** * url跳转 * * @param context * @param url */ public static void showUrlRedirect(Context context, String url) { URLs urls = URLs.parseURL(url); if (urls != null) { showLinkRedirect(context, urls.getObjType(), urls.getObjId(), urls.getObjKey()); } else { openBrowser(context, url); } } public static void showLinkRedirect(Context context, int objType, int objId, String objKey) { switch (objType) { case URLs.URL_OBJ_TYPE_NEWS: showNewsDetail(context, objId); break; case URLs.URL_OBJ_TYPE_QUESTION: showQuestionDetail(context, objId); break; case URLs.URL_OBJ_TYPE_QUESTION_TAG: showQuestionListByTag(context, objKey); break; case URLs.URL_OBJ_TYPE_SOFTWARE: showSoftwareDetail(context, objKey); break; case URLs.URL_OBJ_TYPE_ZONE: showUserCenter(context, objId, objKey); break; case URLs.URL_OBJ_TYPE_TWEET: showTweetDetail(context, objId); break; case URLs.URL_OBJ_TYPE_BLOG: showBlogDetail(context, objId); break; case URLs.URL_OBJ_TYPE_OTHER: openBrowser(context, objKey); break; } }
URLs urls = URLs.parseURL(url);这句话其实就是解析url为两个参数:链接类型,和对应新闻条目的ID,这个代码根据不同url进行不同分析。
相关文章推荐
- oschina-app源码解析-webview重组html
- WebViewJavaScriptBridge源码解析(一)
- WebViewDemo源码及解析
- WebViewJavascriptBridge工程结构和源码解析
- wemall app商城源码中基于JAVA的绑定和处理fragments和viewpager之间的逻辑关系代码
- 从源码解析,为何AppWidget不支持自定义View
- iOS WebViewJavascriptBridge源码解析
- 基于WKWebview IOS app (OC) 源码
- oschina-app源码分析-提醒标签BadgeView使用方法
- 【OSC手机App技术解析】- 应用内Web链接的处理
- iOS WebView JavascriptBridge 源码解析
- Appium的一点一滴:Appium测试hybirdapp,在webView中处理方法
- WebViewJavaScriptBridge源码解析
- 【OSC手机App技术解析】- 在WebView中组装HTML
- 【OSC手机App技术解析】- 应用内Web链接的处理
- iOS源码解析—WebViewJavascriptBridge
- React-Native webview遇到的坑及android源码解析(一)
- 【OSC手机App技术解析】- 在WebView中组装HTML
- WebViewJavascriptBridge源码解析 -1
- Appium对京东App中WebView的处理