【问题标题】:Android ZXing Integration unable to start activity errorAndroid ZXing 集成无法启动活动错误
【发布时间】:2016-04-19 22:15:40
【问题描述】:

在我的头撞到我的桌子上并雕刻了stackoverflow上的相关帖子之后,我不愿意发布这个问题,但就是无法解决问题。所以我们在这里。我正在尝试将 ZXing 集成到我的 Android 应用程序中,正如许多开发人员所尝试的那样,但始终遇到相同的错误:Unable to start activity ComponentInfo。我添加了 core.jar 并将活动和相机权限添加到清单中。我知道我在这里缺少一些非常简单的事情要做。尝试使用意图进行扫描时出现以下错误。我已经尝试过浏览 ZXing 库并将所有 switch 语句更改为 if/else。我还尝试在 ZXing 布局中添加我的包名称,如下所示:Android ZXing implementation

Java:

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainMenu extends Activity {

Button btn_scan

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_menu);

    btn_scan = (Button) findViewById(R.id.btn_scanbarcode);
    btn_scan.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {

            Intent intent = new Intent(
                    "com.google.zxing.client.android.SCAN");
            intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
            startActivityForResult(intent, 0);

        }
    });

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {
            String contents = intent.getStringExtra("SCAN_RESULT");
            String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
            // Handle successful scan
        } else if (resultCode == RESULT_CANCELED) {
            // Handle cancel
        }
    }
}

}

清单

<activity
        android:name="com.google.zxing.client.android.CaptureActivity"
        android:configChanges="orientation|keyboardHidden"
        android:screenOrientation="landscape"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
        android:windowSoftInputMode="stateAlwaysHidden" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
        <intent-filter>
            <action android:name="com.google.zxing.client.android.SCAN" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

LogCat:

11-30 10:54:04.713: E/AndroidRuntime(15452): FATAL EXCEPTION: main
11-30 10:54:04.713: E/AndroidRuntime(15452): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.testapp/com.google.zxing.client.android.CaptureActivity}: android.view.InflateException: Binary XML file line #27: Error inflating class com.android.testapp
11-30 10:54:04.713: E/AndroidRuntime(15452):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2240)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2275)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at android.app.ActivityThread.access$600(ActivityThread.java:139)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1277)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at android.os.Handler.dispatchMessage(Handler.java:99)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at android.os.Looper.loop(Looper.java:156)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at android.app.ActivityThread.main(ActivityThread.java:5060)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at java.lang.reflect.Method.invokeNative(Native Method)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at java.lang.reflect.Method.invoke(Method.java:511)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at dalvik.system.NativeStart.main(Native Method)
11-30 10:54:04.713: E/AndroidRuntime(15452): Caused by: android.view.InflateException: Binary XML file line #27: Error inflating class com.android.testapp
11-30 10:54:04.713: E/AndroidRuntime(15452):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:278)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at android.app.Activity.setContentView(Activity.java:1897)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at com.google.zxing.client.android.CaptureActivity.onCreate(CaptureActivity.java:143)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at android.app.Activity.performCreate(Activity.java:4543)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1071)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2196)
11-30 10:54:04.713: E/AndroidRuntime(15452):    ... 11 more
11-30 10:54:04.713: E/AndroidRuntime(15452): Caused by: java.lang.ClassNotFoundException: com.android.testapp
11-30 10:54:04.713: E/AndroidRuntime(15452):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at android.view.LayoutInflater.createView(LayoutInflater.java:552)
11-30 10:54:04.713: E/AndroidRuntime(15452):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
11-30 10:54:04.713: E/AndroidRuntime(15452):    ... 21 more

【问题讨论】:

  • 在你的一个布局中,有一个叫做testapp的东西。请发布相应的 XML。这可能是问题的一部分。
  • 只是想澄清一下。您想查看 ZXing 布局还是我调用 ZXing 意图的布局?

标签: android zxing


【解决方案1】:

您已将 zxing 项目作为库导入并删除不需要的类。这个过程很痛苦,但我成功了。

【讨论】:

    【解决方案2】:

    这里有几个问题,其中你试图在你的应用中声明我们的活动和命名空间。请不要这样做。它对您不起作用,并且会给我们的用户带来问题。

    你似乎想这样做:https://github.com/zxing/zxing/wiki/Scanning-Via-Intent

    如果是这样,那比你在这里做的要容易得多。

    【讨论】:

    • Sean 我在整个 stackoverflow 中都阅读了您的 cmets,不鼓励以这种方式使用 Zxing。我非常感谢您的工作并计划在应用程序的“关于”部分中为您的团队提供此功能的全部功劳。事实上,有些用户没有在他们的设备上安装扫描仪应用程序。此 ScanningViaIntent 是否支持尚未安装扫描仪应用且不想下载的设备?
    • 我并不反对这种方法本身。我不鼓励 1) 接近完整的复制和粘贴,2) 任何由于清单条目错误而干扰我们用户的做法,这通常是因为 #1,以及 3) 浪费您的时间来构建自己的未复制 UI,如果你不需要它。这不仅仅是获得信用与否的问题。如果仍然重用代码,则 Apache 许可证已经要求您这样做。是的,Intent 机制将帮助用户安装尚未安装的应用。
    • 感谢肖恩的回复。它没有回答我原来的问题。我不打算只复制和粘贴您的代码。我唯一的目标是在我开始更改您提供的实际代码之前让它工作。我也不介意构建自己的 UI。许多开发人员已经这样做了,我希望他们能引导我走向正确的方向。请不要惩罚我们,许多用户已经安装了条形码扫描仪应用程序,有些则没有。我只是想涵盖那些没有也不愿下载额外应用程序的人。如果您不想提供帮助,我理解。
    • 那时我很迷茫。您说您想构建自己的应用程序,但是,您上面的代码显然是在尝试使用 Intents。我正在指导如何使它发挥作用。如果这不是您要问的,您需要澄清您的问题。
    • 我的应用程序将单击一个按钮,它将通过意图启动条形码扫描仪。如果设备上没有条码扫描器而不是要求用户下载它,它应该使用通过 com.google.zxing.client.android 库嵌入在应用程序中的 zxing 代码。
    猜你喜欢
    • 2012-07-23
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多