在OSChina.NET手機客戶端上顯示資訊,最好的方案就是用 WebView 這樣的控件來做了,因爲以HTML在WebView上顯示可以達到富文本 的顯示風格而且也能解決GIF圖片在幾個手機平臺上Image控件無法顯示的問題。
但是我們都知道文章中很可能會帶有各種鏈接,每當用戶點擊這些鏈接的時候,應用都會啓動當前手機的 默認瀏覽器來開啓鏈接指向的網頁。如果鏈接本身就是站外的那還好說,但如果是站內鏈接那這種默認處理方 式就很難讓人接受了,比如我用App的過程中相關新聞點擊後彈出Safari來看新聞就有點匪夷所思,我們更希 望直接在App中直接瀏覽新聞;對於 @某某 的個人空間更是如此。
所以必須在瀏覽器鏈接被點擊前就捕獲這個事件來進行自定義處理。如果是與App無關的站外鏈接或者App 無法顯示的鏈接我們就用默認瀏覽器打開,如果這個鏈接的導向目標能夠被App處理,則捕獲鏈接後用代碼來 自己解決。
以下就是三個手機平臺捕獲瀏覽器鏈接被點擊後的事件。
WP7:
this. browser. Navigating += new EventHandler<NavigatingEventArgs>( (s, e) => { //其中 e.Uri.AbsoluteUri 就代表被點擊的 url Tool. ProcessAppLink( e. Uri. AbsoluteUri ); });
iOS:
@interface NewsDetail : UIViewController<UIWebViewDelegate> { } //然後頁面開啓時 self.webView.delegate = self; -(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { //其中[request.URL absoluteString] 就代表被點擊的 url [Tool analysis:[request.URL absoluteString] andNavController:self.parentViewController.navigationController]; }
Android:
mWebView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view,String url) { //其中 url 就代表被點擊的 url //showUrlRedirect(view.getContext(), url); return true; } });
按照以上方式,我們所有使用 WebView 的頁面上只要鏈接被點擊,都會按照這個流程來執行,就達到了預期的目的。
如果大家有什麼疑問的話,歡迎在下面回帖一起探討。
PS:
OSC Android客戶端下載地址:http://www.oschina.net/uploads/osc.apk
OSC iPhone客戶端下載地址:http://www.oschina.net/uploads/osc.ipa
OSC Windows Phone客戶端下載地址:http://www.oschina.net/uploads/osc.xap