¿Cómo forzar el uso de zxing lib con sólo mi aplicación?

Ok, digamos que hay 3 aplicaciones diferentes que utilizan zxing lib en el teléfono. Siempre que quiera abrir zxing con mi propia aplicación android me pregunta si para completar la acción usando la aplicación 1 o la aplicación 2 o mi propia aplicación. ¿Cómo lo obligo a ejecutar sólo a través de mi aplicación sin ningún diálogo? ¿Hay alguna posibilidad de hacerlo?

EDITAR

En Adicional a CommonsWare, puede hacerlo si desea manejar el resultado del código de barras en la otra actividad.

paso 1: saltar al método denominado handleDecode en Capture Activity. Agregue estas líneas después de handleDecodeInternally (rawResult, resultHandler, código de barras);

Intent intent = new Intent(getIntent().getAction()); intent.putExtra("SCAN_RESULT", rawResult.getText()); setResult(RESULT_OK,intent); finish(); 

paso 2: Haga lo que quiera hacer en el evento onActivityResult de la otra actividad.

PS: Gracias de nuevo a CommonsWare.

4 Solutions collect form web for “¿Cómo forzar el uso de zxing lib con sólo mi aplicación?”

En primer lugar, no hay "zxing lib". Se supone que debes utilizar la aplicación Barcode Scanner, vinculándola a tu aplicación en el nivel de actividad, idealmente usando su código IntentIntegrator . Aquí hay una aplicación de ejemplo que demuestra esto . Los creadores de ZXing específicamente no soportan ni respaldan la cocción del código fuente del escáner de código de barras en otra aplicación.

Sin embargo, dados sus síntomas, tengo que asumir que usted está intentando agregar el código de fuente del explorador de código de barras a su propia aplicación.

Usted presumiblemente tiene algo como esto en su manifiesto en el elemento de la actividad de escaneo:

  <intent-filter > <action android:name="com.google.zxing.client.android.SCAN" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> 

No eres escáner de código de barras. Sin embargo, este <intent-filter> afirma que usted es Barcode Scanner.

Necesita quitar este <intent-filter> , modificar su copia del código fuente del escáner de código de barras para no requerirlo y, a continuación, iniciar la actividad de escaneo utilizando el constructor Intent basado en componentes (por ejemplo, new Intent(this, ThisIsYourRevisedScanningActivity.class) ).

Sólo incluir esto, esto ha hecho lo necesario para mí ..

 Intent intent = new Intent("com.google.zxing.client.android.SCAN"); intent.setPackage(getPackageName()); intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); startActivityForResult(intent, 0); 

Android no le permite establecer esto por su cuenta. Sólo un usuario puede establecer la aplicación predeterminada para una acción. Si en su teléfono desea que su aplicación maneje ese evento, active la casilla Usar como predeterminado antes de seleccionar su aplicación en el selector.

Por motivos de seguridad, Android no le permite configurar su aplicación como predeterminada sin la interacción del usuario, ya que una aplicación malintencionada podría asociarse como predeterminada a varios eventos.

En realidad, usted necesita para eliminar el intento de filtro como CommonsWare dijo, por lo que debe ser como sigue:

 <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"> </activity> 

y en vez de llamar vía la intención externa usted debe llamar a zxing como:

 private final static int ACTION_ZXING_SCANNER = 0x0000c0de; //IntentIntegrator.REQUEST_CODE private void startZxingScanner() { final Intent intent = new Intent(this, com.google.zxing.client.android.CaptureActivity.class); intent.setAction(Intents.Scan.ACTION); startActivityForResult(intent, ACTION_ZXING_SCANNER); } 

y luego el resultado del proceso en onActivityResult() utilizando el código de solicitud ACTION_ZXING_SCANNER . La cadena de importación si es necesario:

 import com.google.zxing.client.android.Intents; 

nota: esto funciona para mí y he añadido zxing proyecto como un lib de mi proyecto por lo que aquí es – el "zxing lib" 🙂

  • ZXing Lector de código de barras: ¿Cómo hacer frontera personalizada alrededor de la pantalla de captura?
  • Bloquee la orientación de la pantalla a la vertical al escanear con la librería Zxing, la aplicación Xamarin.android.
  • ZXing cómo escanear código QR y código de barras 1D?
  • Llamar escáner de código de barras en un clic de botón en la aplicación android
  • Escaneo de códigos de barras / código de barras de ZXing QR
  • Conflicto Android drawable de la identificación del recurso?
  • Utilizar la biblioteca de Zxing en PreviewFrame para aumentar la realidad
  • DataMatrix-codificación con zxing sólo genera 14px mapa de bits
  • Recursos para Android de Xamarin NotFoundException ZXingNetMobile
  • Cómo detener la exploración continua mediante zxing-android-embedded en Android
  • Android con ZXing genera código QR
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.