I am getting an Exception
while working with zxing
scanner. In my application, I want to scan Bar
and QR
codes by single-camera Activity
( CaptureActivity
of zxing). For that, I used the following code in my app
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.setPackage("com.google.zxing.client.android");
intent.putExtra("SCAN_MODE", "PRODUCT_MODE");
intent.putExtra("SCAN_FORMATS", "CODE_39,CODE_93,CODE_128,DATA_MATRIX,ITF,CODABAR,EAN_13,EAN_8,UPC_A,QR_CODE");
startActivityForResult(intent, 0);
But I am getting the exception:-
01-03 10:28:15.445: E/AndroidRuntime(3405): android.content.ActivityNotFoundException: No Activity found to handle Intent
{ act=com.google.zxing.client.android.SCAN pkg=com.google.zxing.client.android (has extras) }
I can't use
IntentIntegrator
in my App. So please someone help me, to solve this issue. This is my full log cat output
01-04 04:58:39.551: D/AndroidRuntime(905): Shutting down VM
01-04 04:58:39.551: W/dalvikvm(905): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
01-04 04:58:39.581: E/AndroidRuntime(905): FATAL EXCEPTION: main
01-04 04:58:39.581: E/AndroidRuntime(905): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.google.zxing.client.android.SCAN pkg=com.google.zxing.client.android (has extras) }
01-04 04:58:39.581: E/AndroidRuntime(905): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1545)
01-04 04:58:39.581: E/AndroidRuntime(905): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1416)
01-04 04:58:39.581: E/AndroidRuntime(905): at android.app.Activity.startActivityForResult(Activity.java:3351)
01-04 04:58:39.581: E/AndroidRuntime(905): at android.app.Activity.startActivityForResult(Activity.java:3312)
01-04 04:58:39.581: E/AndroidRuntime(905): at com.google.zxing.shopping.shopping$1.onClick(shopping.java:98)
01-04 04:58:39.581: E/AndroidRuntime(905): at android.view.View.performClick(View.java:4084)
01-04 04:58:39.581: E/AndroidRuntime(905): at android.view.View$PerformClick.run(View.java:16966)
01-04 04:58:39.581: E/AndroidRuntime(905): at android.os.Handler.handleCallback(Handler.java:615)
01-04 04:58:39.581: E/AndroidRuntime(905): at android.os.Handler.dispatchMessage(Handler.java:92)
01-04 04:58:39.581: E/AndroidRuntime(905): at android.os.Looper.loop(Looper.java:137)
01-04 04:58:39.581: E/AndroidRuntime(905): at android.app.ActivityThread.main(ActivityThread.java:4745)
01-04 04:58:39.581: E/AndroidRuntime(905): at java.lang.reflect.Method.invokeNative(Native Method)
01-04 04:58:39.581: E/AndroidRuntime(905): at java.lang.reflect.Method.invoke(Method.java:511)
01-04 04:58:39.581: E/AndroidRuntime(905): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
01-04 04:58:39.581: E/AndroidRuntime(905): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-04 04:58:39.581: E/AndroidRuntime(905): at dalvik.system.NativeStart.main(Native Method)
Thanks in advance to all
You are getting ActivityNotFoundException as Zxing application is not installed in your device. So Please check whether it is installed or not. If it's not then redirect user to playstore-page of Zxing:
I've implemented some code for these. Modify it according to your needs:
boolean isZxingInstalled;
/*
*Checking whether Zxing is installed or not
*/
try
{
ApplicationInfo info = getPackageManager().getApplicationInfo("com.google.zxing.client.android", 0 );
boolean isZxingInstalled = true;
}
catch(PackageManager.NameNotFoundException e){
isZxingInstalled=false;
}
/*
* Store the boolean value on the basis of Zxing is installed or not
*/
if(isZxingInstalled) //If it is then intent Zxing application
{
//start the facebook app
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.setPackage("com.google.zxing.client.android");
intent.putExtra("SCAN_MODE", "PRODUCT_MODE");
intent.putExtra("SCAN_FORMATS", "CODE_39,CODE_93,CODE_128,DATA_MATRIX,ITF,CODABAR,EAN_13,EAN_8,UPC_A,QR_CODE");
startActivityForResult(intent, 0);
}
else //It's not then redirect user to PlayStore-ZxingPlage
{
/*
*Checking whether PlayStore is installed in device or not?
*/
boolean isPlayStoreInstalled
try
{
ApplicationInfo i=getPackageManager().getApplicationInfo("com.google.vending", 0 );
boolean isPlayStoreInstalled = true;
}
catch(PackageManager.NameNotFoundException e){
isPlayStoreInstalled=false;
}
/*
* If it is the download Zxing
*/
if(isPlayStoreInstalled)
{
Intent DownloadZxing = new Intent(Intent.ACTION_VIEW,Uri.parse("market://detailsid=com.google.zxing.client.android"));
startActivity(DownloadZxing);
}
else //Toast message indicating No PlayStore Found
{
Toast.makeText(this,"Install PlayStore First",Toast.LENGHT_SHORT).show();
}
}
Hope these may help!! :)