[英]Open dialog to choose browser
我有一個加載了url的webview,其中有一些URL可單擊,但是問題是當我單擊加載在webview中的頁面上的鏈接時,它在默認瀏覽器中打開,我想在單擊時打開包含所有瀏覽器的對話框在設備上的鏈接上,要求選擇瀏覽器,並且應該在選定的瀏覽器中打開它?
覆蓋默認點擊行為
當用戶單擊WebView中的鏈接時,默認行為是加載任何可以處理該鏈接的默認應用程序。 因此,如果您單擊Web URL,瀏覽器將打開進行處理。 如果您試圖在本地構建的網頁之間導航,則需要覆蓋此功能。 幸運的是,這並不難處理。 通過將WebView的WebViewClient設置為WebViewClient的新實例,您可以超級快地完成此操作,如下所示:
在OnCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webView = (WebView) findViewById(R.id.webView1);
WebViewClient viewClient = new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(url));
startActivity(intent);
view.loadUrl(url);
return true;
}
};
webView.setWebViewClient(viewClient);
webView.loadUrl("http://www.google.com");
}
檢查以下鏈接以獲取有關WebViewClient的更多信息
但是問題是當我單擊加載在Webview中的頁面上的鏈接時,它在默認瀏覽器中打開
如果您已選擇
默認情況下使用此應用程序復選框
然后,Android停止向用戶顯示選項列表,並繼續在選定的默認瀏覽器中打開鏈接。
唯一的解決方案是通過進入settings來清除該首選項。然后android會使用List向您顯示Complete action。
而且,如果您想使用復雜的方法,則可以使用Javascript注入並在單擊鏈接時調用Android代碼,從而以編程方式向用戶顯示瀏覽器列表。
您可以使用PackageManager
和queryIntentActivityOptions()
過濾掉您的活動並獲取用戶可以選擇的其他活動的列表。
@Neha,這取決於您的手機中可用的瀏覽器數量。 例如,如果您只有默認瀏覽器,它將僅重定向到該瀏覽器。 如果您下次安裝了chrome瀏覽器,則下次運行您的應用時,系統會要求選擇瀏覽器選項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.