簡體   English   中英

在Android中檢測到ZXing條形碼掃描儀時發生ClassNotFoundException

[英]ClassNotFoundException while Detecting ZXing BarCode scanner in android

我正在使用以下行來檢測ZXing條形碼掃描儀 ,但它引發了名為ClassNotFoundException異常。

try{
  Intent intent = new Intent("com.google.zxing.client.android.SCAN");

   startActivityForResult(intent, 0);

}
catch(Exception e)
{
 //calling Alert message which says to download the application
}

未找到說com.google.zxing.client.android.CaptureActivity ClassNotFoundException即使我將它放在try,catch塊中,我也不明白為什么未處理此異常。

完整的代碼:

我也嘗試通過使用isIntentAvailable(Context context,Intent intent)方法,但是仍然出現相同的錯誤。

 try{
      Intent intent = new Intent("com.google.zxing.client.android.SCAN");


      if(isIntentAvailable(this,  intent)){

        runOnUiThread(new Runnable() {
        public void run() {
        pd.dismiss();
        }
        });

        startActivityForResult(intent, 0);
        }

        else{
         AlertDialog diaBox = installDialogBox();

         diaBox.show();
        }
        }
        catch (Exception e) {
        pd.dismiss();
        Log.e("in Exception","Exception");
        e.printStackTrace();

        }

方法:檢查應用程序是否已安裝。

 public static boolean isIntentAvailable(Context context, Intent intent) {
final PackageManager packageManager =  context.getPackageManager();
List<ResolveInfo> list =packageManager.queryIntentActivities(intent,PackageManager.MATCH_DEFAULT_ONLY);

return list.size() > 0;
            }

Logcat錯誤:

05-24 10:24:36.507: E/AndroidRuntime(9159): FATAL EXCEPTION: main
05-24 10:24:36.507: E/AndroidRuntime(9159): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.zzzzz.xxxxx.activies/com.google.zxing.client.android.CaptureActivity}: java.lang.ClassNotFoundException: com.google.zxing.client.android.CaptureActivity in loader dalvik.system.PathClassLoader[/data/app/com.sparx.maternity.activies-2.apk]
    05-24 10:24:36.507: E/AndroidRuntime(9159):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1618)
    05-24 10:24:36.507: E/AndroidRuntime(9159):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1716)
    05-24 10:24:36.507: E/AndroidRuntime(9159):     at android.app.ActivityThread.access$1500(ActivityThread.java:124)
    05-24 10:24:36.507: E/AndroidRuntime(9159):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:968)
    05-24 10:24:36.507: E/AndroidRuntime(9159):     at android.os.Handler.dispatchMessage(Handler.java:99)
    05-24 10:24:36.507: E/AndroidRuntime(9159):     at android.os.Looper.loop(Looper.java:123)
    05-24 10:24:36.507: E/AndroidRuntime(9159):     at android.app.ActivityThread.main(ActivityThread.java:3806)
    05-24 10:24:36.507: E/AndroidRuntime(9159):     at java.lang.reflect.Method.invokeNative(Native Method)
    05-24 10:24:36.507: E/AndroidRuntime(9159):     at java.lang.reflect.Method.invoke(Method.java:507)
    05-24 10:24:36.507: E/AndroidRuntime(9159):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    05-24 10:24:36.507: E/AndroidRuntime(9159):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    05-24 10:24:36.507: E/AndroidRuntime(9159):     at dalvik.system.NativeStart.main(Native Method)
    05-24 10:24:36.507: E/AndroidRuntime(9159): Caused by: java.lang.ClassNotFoundException: com.google.zxing.client.android.CaptureActivity in loader dalvik.system.PathClassLoader[/data/app/com.sparx.maternity.activies-2.apk]
    05-24 10:24:36.507: E/AndroidRuntime(9159):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
    05-24 10:24:36.507: E/AndroidRuntime(9159):     at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
    05-24 10:24:36.507: E/AndroidRuntime(9159):     at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
    05-24 10:24:36.507: E/AndroidRuntime(9159):     at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
    05-24 10:24:36.507: E/AndroidRuntime(9159):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1610)
    05-24 10:24:36.507: E/AndroidRuntime(9159):     ... 11 more

請回復。

調用前檢查意圖是否可用

public static boolean isIntentAvailable(Context context, Intent intent) {
    final PackageManager packageManager = context.getPackageManager();
      List<ResolveInfo> list =
            packageManager.queryIntentActivities(intent,
                    PackageManager.MATCH_DEFAULT_ONLY);
    return list.size() > 0;
}

也嘗試使用

 try {
          ....
        } catch ( ClassNotFoundException e ) {
            // TODO handle me
        }

需要查詢它是否有這個程序。 而且不是要捕獲異常

Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
List<ResolveInfo> list = getPackageManager().queryIntentActivities( intent, 0 );

list.size()> 0,表示存在目標應用程序。

您正在通過Intent進行集成。 但是我猜想您也嘗試在您的項目中包含我們的代碼以及清單的一部分。 不要這樣 這是沒有必要的,並且會引起類似這樣的錯誤,因為您還告訴Android該代碼在您的應用中。 不是,也不應該是。

在SO中,該問題已通過多種方式得到了解答。 有時Zxing可能很難集成。 關注幫助他人的較早的帖子,重做您的集成,您肯定錯過了一些步驟。

這個這個

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM