2012-12-14 37 views
3

在我的Android系統中,如果點擊導致Play商店的鏈接,Android會自動打開Play商店,以便我可以下載該應用。直接在Web視圖中直接進入Android電子市場的鏈接

如果該鏈接位於應用程序的webview中,而是打開一個網頁,類似於在桌面上打開的網頁。有沒有辦法解決?我試圖鏈接的類型有:

市場://細節ID = com.alpinereplay.android(根本不會在網頁視圖工作) https://play.google.com/store/apps/details?id=com.appname.android(開起來像網站桌面)

+1

這是令人失望的 - 我本來期望'市場://'工作。推動來推動,你可以實現你自己的方案(例如,'davidmarket://'),指向你的'Theme.NoDisplay'活動,轉向並啓動常規'market://'活動。 – CommonsWare

+0

是的,這就是我們要做的,除了該應用程序已經在市場上,所以我不能改變任何本地代碼。 – David

回答

3

我真的很驚訝這種行爲正在發生。你確定這不是明確的嗎? shouldOverrideUrlLoading的文檔在WebViewClient中說:

默認情況下,WebView會要求活動管理器爲url選擇合適的處理程序。

如果你有WebViewClient請確保您有在shouldOverrideUrlLoading代碼來決定何時通過parsing the URL啓動Play商店與負載的頁面在WebView --perhaps,getting the scheme,並使用market方案爲您的網址。

0

默認情況下,如果沒有設置任何WebViewClient

webView.loadUrl("market://details?id=your_package"); 

方法不起作用,它顯示找不到網頁。 如果您嘗試加載包含市場鏈接的頁面,並且未設置WebViewClient,則此頁面將在設備瀏覽器中打開,因此您應設置WebViewClient,因爲您設置了WebViewClient;你應該自己處理市場鏈接,如this answer建議。

但是,即使您未設置WebViewClient,您自定義html內的以下鏈接也會打開市場應用程序。我認爲這是shouldOverrideUrlLoading文檔中提到的情況。

String html = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"><html><head> </head> <body> <p><a href=\"market://details?id=your_package\">Market Link</a></p> </body></html>"; 
webView.loadDataWithBaseURL("", html, "text/html", "UTF-8", "");