Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Zxing issue - ActivityNotFoundException

Tags:

android

zxing

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

like image 557
DJhon Avatar asked Mar 17 '26 04:03

DJhon


1 Answers

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!! :)

like image 147
Vikalp Patel Avatar answered Mar 24 '26 18:03

Vikalp Patel