【问题标题】:Zxing 1.7 And Android API 15 -Scanner Crashing the App on Motorola deviceZxing 1.7 和 Android API 15 - 扫描仪在摩托罗拉设备上崩溃应用程序
【发布时间】:2012-02-06 17:37:52
【问题描述】:

我有 Zxing 1.7 和 Android api 15。通过 Intent 集成扫描仪并添加 CaptureActivity 以便应用程序不会询问要使用哪个相机。创建 core.jar 并将其添加到 Android 项目库中并将 Zxing Android 添加为库项目到我的项目构建路径。 当我第一次单击我的应用程序的“san”选项卡时,扫描仪不工作并且应用程序崩溃,但下次当我重新登录我的应用程序并且可以扫描条形码时,它的功能相同。 当应用程序第一次崩溃时,它会为 CaptureActivity 提供 ClassNot Found 异常。我已经完成了所有需要的步骤,并且还在 Manifst.xml 文件中添加了 CaptureActivity。 请提供建议,因为我尝试了很多替代方案。 Zxing 是否仅适用于现在已过时且替换为 10 的 Android API9?下面是我的 ScanActivity 的代码

public void onCreate(Bundle savedInstanceState) 
  {         
    super.onCreate(savedInstanceState);        
    //Scan code
    Intent intent= new Intent("com.google.zxing.client.android.SCAN");
    intent.putExtra("SCAN_MODE", "PRODUCT_MODE");

    //To aviod the complete action using dialog box
    intent.setClassName(this, "com.google.zxing.client.android.CaptureActivity"); 

    startActivityForResult( intent, 0 );

    //getApplicationContext().startActivity( intent );
    //View scanView = ((ActivityGroup) context).getLocalActivityManager().startActivity(id, newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();

    /*
    Intent i = new Intent(Intent.ACTION_MAIN);
    PackageManager manager = getPackageManager();
    i = manager.getLaunchIntentForPackage( "com.google.zxing.client.android.SCAN" );
    i.addCategory( Intent.CATEGORY_LAUNCHER );
    startActivityForResult( i, 0);
    */
   }

  public void onActivityResult(int requestCode, int resultCode, Intent intent)
  {
    System.out.println("ScanRewardCodeActivity OnActivityResult Method");
    if(requestCode == 0)
    {
      //Stop QR Code Reader intent
      finishActivity( 0 );

      TabActivity tabActivity = (TabActivity)getParent();
      TabHost tabHost = tabActivity.getTabHost();

      if(resultCode == RESULT_OK){
       System.out.println("Done");
      }
    }
 }

【问题讨论】:

    标签: android zxing


    【解决方案1】:

    这里有很多问题。

    • 如果您使用 Intents,则不需要 core/android/ 代码。确保从您的项目中删除所有这些代码,因为我认为它会干扰并导致崩溃。
    • 你不应该修改你的AndroidManifest.xml
    • 是的,zxing 1.7 适用于 4.0.x 之前的所有版本,但是,您应该使用几天前发布的 zxing 2.0
    • 不要尝试编写自己的集成代码。使用android-integration/ 中给出的代码,因为它确实有效

    【讨论】:

    • 感谢 Sean 的建议,我是新的 Android 开发人员并关注链接 damianflannery.wordpress.com/2011/06/13/…。在您的评论中,您说要删除核心/和 android/,但我如何启动扫描活动?我有扫描选项卡 onChange,我称之为我在上面复制的 ScanActivity 代码。您是否建议修改上述代码的 onCreate() 方法?
    • 这就是你所需要的,仅此而已:code.google.com/p/zxing/wiki/ScanningViaIntent
    • 非常感谢..我明白你在说什么..现在我也在尝试非意图方式,就像我说我点击了链接damianflannery.wordpress.com/2011/06/13/…,下面是代码 onCreate 并处理结果,但得到 CaptureActivity not found 错误。我使用过 zxing 1.7 和 Android SDK 15。 Intent intent= new Intent("com.google.zxing.client.android.SCAN"); intent.setClassName(this, "com.google.zxing.client.android.CaptureActivity"); startActivityForResult(intent, 0);
    • 你把两个完全不同的东西混在一起了。我们强烈不鼓励在这篇博文中使用复制和粘贴方法,因此我不会帮助您继续这种方式。
    • 肖恩,很抱歉造成混乱。是的,我确实说了两件事,但是我复制的代码来自我的应用程序,并且该代码与 zxing 1.7 和 Android SDK 9 一起使用,并且是由我的同事开发的。现在我需要修改应用程序中的一些东西,因此从存储库中获取代码并在 zxing 1.7 和 SDK 15 上工作。但是发现 CaptureActivity not found 错误。因此开始研究 Intent 的集成方式。但我仍然不明白为什么非故意的方式不起作用。无论如何,非常感谢您的时间和及时的帮助。
    猜你喜欢
    • 2016-04-28
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    相关资源
    最近更新 更多