簡體   English   中英

在android瀏覽器(WebView)中打開一個鏈接

[英]Open a link in the android browser (WebView)

我最近實現了shouldInterceptRequest方法,以檢測何時單擊鏈接“ http://sitemercado.com.br/valida ”以在android瀏覽器中打開它,而不是在webview內部打開,直到它起作用為止,但是在瀏覽器中打開了該鏈接,但是當我回來使用webview應用程序時,它也已加載,我希望它僅在瀏覽器中加載。

我的代碼如下:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        pb = (findViewById(R.id.pb));
        mWebView = findViewById(R.id.webview);
        mWebView.setListener(this, this);
        mWebView.loadUrl("https://www.sitemercado.com.br/frade");
        mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        mWebView.setWebViewClient(new WebViewClient(){
            @Override
            public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
                super.onReceivedError(view, request, error);
                Intent i = new Intent(MainActivity.this, off.class);
                startActivity(i);
                overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
                finish();
            }
        });

        mWebView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if (Uri.parse(url).getHost().equals("www.sitemercado.com.br/valida")) {
                    return true;

                }
                String valida = "https://www.sitemercado.com.br/valida";
                Intent i = new Intent(Intent.ACTION_VIEW);
                i.setData(Uri.parse(valida));
                startActivity(i);
                Toast.makeText(getApplicationContext(), "1Detectou", Toast.LENGTH_SHORT).show();

                return false;
                }
        });

我要去哪里錯了?

除非我弄錯了,否則以下內容就是錯誤的:

    mWebView.setWebViewClient(new WebViewClient(){
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (Uri.parse(url).getHost().equals("www.sitemercado.com.br/valida")) {
                return true;

            }
            String valida = "https://www.sitemercado.com.br/valida";
            Intent i = new Intent(Intent.ACTION_VIEW);
            i.setData(Uri.parse(valida));
            startActivity(i);
            Toast.makeText(getApplicationContext(), "1Detectou", Toast.LENGTH_SHORT).show();

            return false;
        }
    });

您正在獲取URL的主機,然后將其與完整URL進行比較。 那永遠是不平等的。

然后,僅在該語句為假時才啟動鏈接嗎? 這是相反的,因為您在問題中說,僅當URL為/valida才希望它在瀏覽器中啟動。 無論您嘗試加載哪個URL,Android都將啟動指向/valida的瀏覽器。

嘗試以下方法:

    mWebView.setWebViewClient(new WebViewClient(){
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (Uri.parse(url).getPath().contains("valida")) {
                Intent i = new Intent(Intent.ACTION_VIEW);
                i.setData(Uri.parse(url));
                startActivity(i);
                Toast.makeText(getApplicationContext(), "1Detectou", Toast.LENGTH_SHORT).show();

                return true;
            }

            return false;
        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM