来自 android studio 上不同 activity 的调用函数结果

Call function result from different activity on android studio

我在网上找到了为 Android 创建二维码扫描器应用程序的教程。它工作得很好,但扫描的输出是一个 toast 通知,如您在代码中所见:

 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if (resultCode == Activity.RESULT_OK) {
        val result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data)
        if (result != null) {
            if (result.contents == null) {
                Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show()
            } else {
                Toast.makeText(this, "Scanned: " + result.contents, Toast.LENGTH_LONG).show()
            }
        } else {
            super.onActivityResult(requestCode, resultCode, data)
        }
    }
  }
 }

我想做的是让扫描的代码在应用程序本身内部启动 url。因为我希望页面托管在应用程序本身中,所以我所做的是使用加载内部 html 页面的 webview 创建一个活动。

我拿了扫描码并更改了打开 webview 的积极结果 activity: startActivity(Intent(this, PagInfoActivity::class.java))

效果很好。只要检测到二维码,应用程序就会自动加载所需的 activity。我知道这并不理想,因为 QR 码 link 本身并未用于打开页面,但我试图做的是在 webview 加载时使用该扫描结果。我用文本字符串而不是 URL 创建了 QRCode,这样我就可以像这样将它们注入到 webview 的 loadURL 中:

WebView.loadUrl("file:///android_asset/*QRCODE string*.html");

是否可以从 MainActivity 调用 result.contents

您可以通过多种方式实现这一目标。第一个选项可以是 Explicit Intents 例如, 您需要将其作为额外传递:

Intent i = new Intent(this, PagInfoActivity.class);
i.putExtra("result", result.contents);
startActivity(i);

然后像这样从 PagInfoActivity 中提取它:

Intent intent = getIntent();
String result= intent.getExtras().getString("result");