快速开始

重要:自 2020 年 6 月 28 日起,mPaaS 停止维护 10.1.32 基线。请升级到 10.1.60 或 10.1.68 基线。

扫一扫支持 原生 AARmPaaS Inside和组件化(Portal&Bundle)三种接入方式。文本将介绍在 10.1.68 和 10.1.60 基线下如何使用扫码功能。自 mPaaS 10.1.68.33 版本基线起,扫一扫支持全屏模式下的多码识别。

前置条件

添加 SDK

原生 AAR 方式

参考 AAR 组件管理,通过 组件管理(AAR) 在工程中安装 扫码 组件。

mPaaS Inside 方式

在工程中通过 组件管理 安装 扫码 组件。
更多信息,参考 管理组件依赖

组件化方式

在 Portal 和 Bundle 工程中通过 组件管理 安装 扫码 组件。
更多信息,参考 管理组件依赖

使用扫一扫功能

10.1.68

使用全屏扫码功能

  1. ScanRequest scanRequest = new ScanRequest();
  2. MPScan.startMPaasScanFullScreenActivity(this, scanRequest, new MPScanCallbackAdapter() {
  3. @Override
  4. public boolean onScanFinish(final Context context, MPScanResult mpScanResult, final MPScanStarter mpScanStarter) {
  5. Toast.makeText(getApplicationContext(),
  6. mpScanResult != null ? mpScanResult.getText() : "没有识别到码", Toast.LENGTH_SHORT).show();
  7. ((Activity) context).finish();
  8. // 返回 true 表示该回调已消费,不需要再次回调
  9. return true;
  10. }
  11. });

使用窗口扫码功能

在 mPaaS 10.1.68 基线上使用窗口扫码功能(旧标准 UI),若扫码失败直接返回扫码界面,若扫码成功将获取二维码的 URL 信息。

  1. ScanRequest scanRequest = new ScanRequest();
  2. scanRequest.setScanType(ScanRequest.ScanType.QRCODE);
  3. MPScan.startMPaasScanActivity(this, scanRequest, new ScanCallback() {
  4. @Override
  5. public void onScanResult(final boolean isProcessed, final Intent result) {
  6. if (!isProcessed) {
  7. // 扫码界面点击物理返回键或左上角返回键
  8. return;
  9. }
  10. // 注意:本回调是在子线程中执行
  11. runOnUiThread(new Runnable() {
  12. @Override
  13. public void run() {
  14. if (result == null || result.getData() == null) {
  15. // 扫码失败
  16. return;
  17. }
  18. // 扫码成功
  19. String url = result.getData().toString();
  20. }
  21. });
  22. }
  23. });

10.1.60

在 10.1.60 基线上使用扫码功能,若扫码失败直接返回扫码界面,若扫码成功将获取二维码的 URL 信息。

  1. ScanService service = LauncherApplicationAgent
  2. .getInstance().getMicroApplicationContext()
  3. .findServiceByInterface(ScanService.class.getName());
  4. ScanRequest scanRequest = new ScanRequest();
  5. scanRequest.setScanType(ScanRequest.ScanType.QRCODE);
  6. service.scan(this, scanRequest, new ScanCallback() {
  7. @Override
  8. public void onScanResult(boolean isProcessed, final Intent result) {
  9. if (!isProcessed) {
  10. // 扫码界面点击物理返回键或左上角返回键
  11. return;
  12. }
  13. // 注意:本回调是在子线程中执行
  14. runOnUiThread(new Runnable() {
  15. @Override
  16. public void run() {
  17. if (result == null || result.getData() == null) {
  18. // 扫码失败
  19. return;
  20. }
  21. // 扫码成功
  22. String url = result.getData().toString();
  23. }
  24. });
  25. }
  26. });