【问题标题】:open the link in webview Android Studio在 webview Android Studio 中打开链接
【发布时间】:2021-01-07 18:05:48
【问题描述】:

你好,我已经在 android studio 的邮件活动中创建了 webview,现在我处于扫描仪活动中,当 APP 扫描任何具有链接的 QR 码时,它只会写入链接 但我想做的是在邮件活动中已创建的 Web 视图中打开链接。

让我把我的扫描仪文件放在这里

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_scanner);
        scannView = findViewById(R.id.scannerView);
        codeScanner = new CodeScanner(this,scannView);
        resultData = findViewById(R.id.resultsOfQr);

        codeScanner.setDecodeCallback(new DecodeCallback() {
            @Override
            public void onDecoded(@NonNull final Result result) {

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        resultData.setText(result.getText());
//                        Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(result.getText()));
//                        startActivity(browserIntent);

                        Intent intent = new Intent(getBaseContext(), MainActivity.class);
                        intent.putExtra("myurl1", result.getText());
                        startActivity(intent);

                    }
                });

            }
        });


        scannView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                codeScanner.startPreview();
            }
        });
    }
    
    
            scannView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    codeScanner.startPreview();
                }
            });
        }

Mailactivity 中的 WEBVIEW

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    scanBtn = findViewById(R.id.scanBtn);

    MywebView = (WebView) findViewById(R.id.view2);
    WebSettings webSettings = MywebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    MywebView.loadUrl("https://google.com/APP/");

    MywebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url.contains("tel:")) {
                Intent intent = new Intent(Intent.ACTION_CALL);
                intent.setData(Uri.parse(url));
                startActivity(intent);
                return true;
            }else{
                return false;
            }
        }
    });
    scanBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(getApplicationContext(),Scanner.class));
        }
    });

    String myrul = getIntent().getStringExtra("myurl1");
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            MywebView.loadUrl(myrul);
        }
    });

}

任何想法我该怎么做,任何帮助表示赞赏。 谢谢x

【问题讨论】:

    标签: java android android-studio webview


    【解决方案1】:

    在你的 CodeScanner 回调中加载 WebView

    runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        resultData.setText(result.getText());
                        MywebView.loadUrl(result.getText());
                    }
                });
    

    【讨论】:

    • 如果我在上面创建变量,那么它就会崩溃!
    • 如果您的 WebView 和 CodeScanner 处于不同的活动中,那么您可以使用 Intent 将 CodeScanner 的结果传递给 MainActivity,然后使用它加载 WebView。 Passing Data Between Activities
    • 我非常感谢您的帮助 Faisal,但由于我对应用程序非常陌生,即使在所有这些非常有用的链接之后,我也没有多少信息可以做到这一点。我更新了代码,我想我现在可以通过意图,但应用程序现在一直崩溃? plx 可以随时快速浏览一下吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 2011-07-26
    相关资源
    最近更新 更多