Я использую Zxing на вкладке (фрагмент) и использую библиотеку поддержки (для компонентов Material Design), поэтому мне пришлось называть это так:
Интегратор IntentIntegrator = новый IntentIntegrator (getActivity ());
integrator.forSupportFragment (это) .initiateScan ();
затем в onActivityResult ()
if (resultCode == Activity.RESULT_OK) {
if (requestCode == IntentIntegrator.REQUEST_CODE) {
String contents = data.getStringExtra("SCAN_RESULT");
String format = data.getStringExtra("SCAN_RESULT_FORMAT");
Log.i(TAG, "Barcode Result: " + contents);
etc...
}
}
и в моем Manifest.xml
<activity
android:name="com.google.zxing.client.android.CaptureActivity"
android:configChanges="orientation|keyboardHidden"
android:windowSoftInputMode="stateAlwaysHidden" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="com.google.zxing.client.android.SCAN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Теперь все работает очень хорошо. Я не был успешным, просто используя намерения и startActivityForResult (). Сканер запустится и зафиксирует QR-код, но не вернется.
В моем build.grade у меня есть:
репозитории {mavenCentral ()
maven {url "https://raw.github.com/embarkmobile/zxing-android-minimal/mvn-repo/maven-repository/"}
}
compile 'com.google.zxing:core:3.2.1'
compile 'com.embarkmobile:zxing-android-minimal:2.0.0@aar'
compile 'com.embarkmobile:zxing-android-integration:2.0.0@aar'