使用条形码插件后应用程序崩溃

App crashes after some usage of the barcode plugin

我将此插件添加到我的 cordova/phonegap 项目中:phonegap-plugin-barcodescanner

有时它可以工作,但在尝试一些之后它开始使应用程序崩溃。

我用 logcat 得到了错误,这就是我发现的:

android.content.ActivityNotFoundException: Unable to find explicit activity class {com.my.app/com.google.zxing.client.android.CaptureActivity}; have you declared this activity in your AndroidManifest.xml?

我尝试使用以下方法将此 activity 添加到我的 config.xml:

<activity android:configChanges="orientation|keyboardHidden" android:name="com.google.zxing.client.android.CaptureActivity" 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>

但更糟糕的是,应用程序在启动后崩溃。

有什么想法吗?

我发现了问题... 这个包 plugin.xml 有时不把这些标签放在 Manifest.xml:

<activity android:clearTaskOnLaunch="true" android:configChanges="orientation|keyboardHidden|screenSize" android:exported="false" android:name="com.google.zxing.client.android.CaptureActivity" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden" /> 
<activity android:label="Share" android:name="com.google.zxing.client.android.encode.EncodeActivity" />

这就是为什么一些用户删除 android 平台并再次添加并声称“问题已解决”的原因 - 在一些“android 运行”或“[=25=”之后] prepare”命令,错误又出现了。

我做了一个解决方法,在我的 config.xml 上放置了命令:

 <custom-config-file parent="./application" target="AndroidManifest.xml">
            <activity android:label="Share" android:name="com.google.zxing.client.android.encode.EncodeActivity" />
            <activity android:clearTaskOnLaunch="true" android:configChanges="orientation|keyboardHidden|screenSize" android:exported="false" android:name="com.google.zxing.client.android.CaptureActivity" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden" />
        </custom-config-file>

此标签使用此包在 AndroidManifest.xml 的应用程序标签上添加缺少的活动:https://github.com/dpa99c/cordova-custom-config