您試圖以兩種直接衝突的方式訪問ZXing掃描儀。 ZXing提供的IntentIntegrator
的目的是通過使用所有適當的常量和標誌爲您構建Intent,從而簡化對外部掃描程序應用程序的訪問。 如果您不想在設備上安裝並運行Android電子市場中的外部掃描儀應用程序,則IntentIntegrator
不適合您。這也適用於您發佈的Java代碼,因爲它與本集成商爲啓動外部應用程序而創建的意圖基本相同。
如果您將ZXing作爲一個庫集成到您的項目中,那麼這些組件將成爲您的應用程序的一部分,並且它們必須如此引用。例如,需要在AndroidManifest.xml中聲明,如添加:
<activity android:name="com.google.zxing.client.android.CaptureActivity"
android:screenOrientation="landscape"
android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="stateAlwaysHidden">
<intent-filter>
<action android:name="com.google.zxing.client.android.SCAN"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
確保您在這裏使用了正確的名稱爲活動和行動,因爲這些都引用該庫。然後,你可以使用下面的啓動從Java代碼掃描器活動:
int REQUEST_SCAN; //Request code for Intent result
String packageString = "com.yourapplication.packagename";
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.setPackage(packageString);
//Add any optional extras to pass
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
//Launch
startActivityForResult(intent, REQUEST_SCAN);
通知的意圖行動的聲明相匹配的清單,但包是這個應用程序,而不是Android Market的應用斑馬線。
HTH
http://stackoverflow.com/questions/7510430/qr-reader-in-android/7510615#7510615 ,,檢查這個問題,如果這有幫助.. –
嗨,這[java和位圖的頁面]( http://code.google.com/p/zxing/wiki/DeveloperNotes),如果您使用相機拍攝照片,然後將拍攝的照片弄髒,它會起作用,但這只是一個想法。 – kameny
@Onuray你如何解決問題? – Erum