Как интегрировать Zxing без установки приложения сканера штрих-кода?

Я добавил приложение Zying android в свое приложение в качестве библиотеки. Затем отредактировал Manifest.xml и попытался использовать интегратор Intent. Не повезло.

Загрузка приложения сканера абсолютно необоснованна.

Кстати:

Intent scanIntent = new Intent("com.google.zxing.client.android.SCAN"); scanIntent.setPackage("com.google.zxing.client.android"); 11-11 15:15:27.793: WARN/System.err(15384): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.google.zxing.client.android.SCAN cat=[android.intent.category.DEFAULT] pkg=com.google.zxing.client.android (has extras) } 

Solutions Collecting From Web of "Как интегрировать Zxing без установки приложения сканера штрих-кода?"

+1 для вашего вопроса. Я пробовал это, но не повезло, тогда я добавил файлы кода в свое приложение. Если вы хотите, вы также можете это сделать. Вот ссылка:

http://code.google.com/p/zxing/source/browse/trunk#trunk%2Fandroid

Если вы получите лучший способ, дайте мне знать.

Вы пытаетесь получить доступ к сканеру ZXing двумя противоречивыми способами. Целью IntentIntegrator которую ZXing предоставляет, является упрощение доступа к внешнему приложению сканера путем создания Intent для вас со всеми соответствующими константами и флагами. Если вы не хотите устанавливать и запускать приложение внешнего сканера из Android Market на устройстве, IntentIntegrator не для вас. Это также верно с Java-кодом, который вы опубликовали, так как это по сути тот же Intent, который интегратор создаст для запуска внешнего приложения.

Если вы интегрируете 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> 

Убедитесь, что вы использовали правильное имя для активности и действия, так как они должны ссылаться на библиотеку. Затем вы можете запустить Activity Scanner из своего 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); 

Обратите внимание, что действие Intent соответствует объявлению в манифесте, но PACKAGE – это приложение, а не приложение Android Market ZXing.

НТН

Вы должны следовать шагу, указанному в ссылке

http://www.androidaz.com/development/zxing-qr-reader-direct-integration

Вы можете скачать core.jar из

http://repo1.maven.org/maven2/com/google/zxing/core/2.2/

Вышеприведенное работает для меня, если вы получите ошибку, просто поместите ядро-2.2.jar в libs и очистите свой проект