我想在android應用中實現深層鏈接。如何在Android應用上的WebView中啓用深度鏈接?
當我點擊Chrome瀏覽器等Android瀏覽器上的自定義網址(xxxx:// repost?id = 12)的深層鏈接時,我的應用程序打開並運行得非常好。
問題是,在應用程序中,有一個webView小部件,我也想在那裏進行深層鏈接。
目前,它顯示Can't connect to the server
錯誤。
在此先感謝。
我想在android應用中實現深層鏈接。如何在Android應用上的WebView中啓用深度鏈接?
當我點擊Chrome瀏覽器等Android瀏覽器上的自定義網址(xxxx:// repost?id = 12)的深層鏈接時,我的應用程序打開並運行得非常好。
問題是,在應用程序中,有一個webView小部件,我也想在那裏進行深層鏈接。
目前,它顯示Can't connect to the server
錯誤。
在此先感謝。
這是Android網絡視圖的問題,因爲這會將所有內容視爲URL,但其他瀏覽器(如移動設備上的chrome)會截取該方案,而操作系統將完成剩餘操作以打開相應的應用。 要實現這一點,你需要修改你的Web視圖shouldOverrideUrlLoading功能如下:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
LogUtils.info(TAG, "shouldOverrideUrlLoading: " + url);
Intent intent;
if (url.contains(AppConstants.DEEP_LINK_PREFIX)) {
intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
return true;
}
}
在上面的代碼中有你網站URL方案如更換AppConstants.DEEP_LINK_PREFIX。
Android的應用程序://你的包
希望這有助於!
這是註定要失敗,如果用戶沒有其他的應用程序安裝 – 2016-03-21 14:04:48
這是有關打開深層鏈接爲您的應用程序從您的應用程序Web視圖。請看這個問題?如果有什麼我缺少請詳細說明。 – Pranav 2016-03-23 10:29:47
if(intent.resolveActivity(getPackageManager())!= null) 這將檢查意圖是否可以啓動 – 2016-03-23 11:53:17
@pranav的答案很完美,但如果沒有應用程序來處理意圖,可能會導致崩潰。 @ georgianbenetatos的解決方案,以防止自己幫助
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
} else {
Toast.makeText(this, R.string.no_apps_to_handle_intent, Toast.LENGTH_SHORT).show();
}
覆蓋shouldOverrideUrlLoading功能句柄,如果url.startsWith(APP_SCHEME) – mitvenkatesan 2014-12-21 14:27:17