【问题标题】:Zxing issue - ActivityNotFoundExceptionZxing 问题 - ActivityNotFoundException
【发布时间】:2021-07-15 15:32:25
【问题描述】:

我在使用zxing 扫描仪时收到Exception。在我的应用程序中,我想通过单相机Activity(zxing 的CaptureActivity)扫描BarQR 代码。为此,我在我的应用程序中使用了以下代码

   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);  

但我得到了例外:-

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) }

我不能用

  IntentIntegrator

在我的应用程序中。所以请有人帮助我,解决这个问题。 这是我的完整日志猫输出

             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)

提前感谢大家

【问题讨论】:

    标签: android zxing


    【解决方案1】:

    由于 Zxing 应用程序未安装在您的设备中,您会收到 ActivityNotFoundException。所以请检查它是否已安装。如果不是,则将用户重定向到 Zxing 的 playstore-page:

    我已经为这些实现了一些代码。根据需要修改:

    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();
            }
      }
    

    希望这些可以帮助! :)

    【讨论】:

    • @Patel ..是否可以在不使用第三方应用程序的情况下扫描二维码和条形码?我只是在我的项目中复制粘贴了所有 zxing 包。感谢您的答复。我请帮助我
    • @这意味着我没有安装任何其他应用程序。
    • @Artyom.. 这怎么可能??我是android世界的新手。所以请帮助我..我会非常感谢您的大力帮助....
    • 我更喜欢这种方法来知道 Zxing 是否在设备上: private boolean isZxingInstalledOnDevice(){ Intent intent = new Intent("com.google.zxing.client.android.SCAN"); intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); ResolveInfo info=getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY); //那么如果info!=null,Intent可以启动,否则不安装包 return info!=null; }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 2011-05-06
    • 2013-01-05
    相关资源
    最近更新 更多