Подтвердить что ты не робот

Как интегрировать 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) }
4b9b3361

Ответ 1

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

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

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

Ответ 2

Вы пытаетесь получить доступ к сканеру 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.

НТН