【OSC手機App技術解析】- 應用內Web鏈接的處理

  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

 

轉載:http://www.oschina.net/question/213217_59093

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章