首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android ZXing 集成後彈出選擇器:需自定義 Intent Filter 區分自有掃碼 Activity

     編輯:程式設計綜合問答

現象

集成 ZXing 後啟動掃碼,系統彈出「選擇應用」對話框,列出多個掃碼應用(含 ZXing 自帶)、而非直接進入自有掃碼頁。

原因

ZXing 的 `CaptureActivity` 在 Manifest 中聲明了 `` 和 ``,使其成為獨立啟動入口。隱式 Intent `new Intent("com.google.zxing.client.android.SCAN")` 會匹配所有聲明該 Action 的 Activity。

解決:顯式啟動自有掃碼 Activity

  1. **不使用 ZXing 的 Intent Action**,直接顯式啟動:
Intent intent = new Intent(this, CaptureActivity.class); // 你的掃碼 Activity
startActivityForResult(intent, REQUEST_SCAN);
  1. 若必須用隱式 Intent,**自定義唯一 Action** 並只在你的 Activity 聲明:
<activity android:name=".MyCaptureActivity">
    <intent-filter>
        <action android:name="com.myapp.action.SCAN" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

// 調用
startActivityForResult(new Intent("com.myapp.action.SCAN"), REQUEST_SCAN);

最佳實踐

  • **複製 ZXing 核心解碼邏輯**(core.jar)到項目,自行編寫掃碼界面 Activity,完全掌控 UI、權限、生命周期。
  • 不依賴 ZXing 的 `CaptureActivity`,避免版本衝突、Intent 衝突、難以定制。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved