我使用zxing图书馆,在那里我已经建立ZXing的Android使用Eclipse和包括ZXing的Android到我的项目 而poject清单是
< XML版本=1.0编码=UTF-8&GT?;
<舱单的xmlns:机器人=http://schemas.android.com/apk/res/android
包=phoenix.metro.uis
安卓版code =4
机器人:VERSIONNAME =1.2>
<使用-SDK安卓的minSdkVersion =8/>
<使用-权限的Android:名称=android.permission.CAMERA/>
<使用-权限的Android:名称=android.permission.INTERNET对/>
<使用-权限的Android:名称=android.permission.ACCESS_NETWORK_STATE/>
<应用
机器人:图标=@可绘制/地铁
机器人:标签=@字符串/ APP_NAME
机器人:主题=@安卓风格/ Theme.NoTitleBar>
<活动
机器人:名称=MainActivity
机器人:标签=@字符串/ APP_NAME
机器人:screenOrientation =画像>
< /活性GT;
<活动
机器人:名称=com.google.zxing.client.android.CaptureActivity
机器人:configChanges =方向| keyboardHidden
机器人:screenOrientation =风景
机器人:主题=@安卓风格/ Theme.NoTitleBar.Fullscreen
机器人:windowSoftInputMode =stateAlwaysHidden>
<意向滤光器>
<作用机器人:名称=android.intent.action.MAIN/>
<类机器人:名称=android.intent.category.DEFAULT/>
&所述; /意图滤光器>
<意向滤光器>
<作用机器人:名称=com.google.zxing.client.android.SCAN/>
<类机器人:名称=android.intent.category.DEFAULT/>
&所述; /意图滤光器>
< /活性GT;
<活动机器人:名称=。PhoenixSplashActivity>
<意向滤光器>
<作用机器人:名称=android.intent.action.MAIN/>
<类机器人:名称=android.intent.category.LAUNCHER/>
&所述; /意图滤光器>
< /活性GT;
<活动
机器人:名称=SearchActivity
机器人:多进程=假
机器人:screenOrientation =画像>
< /活性GT;
<活动
机器人:名称=OffersActivity
机器人:screenOrientation =画像>
< /活性GT;
<活动
机器人:名称=。CartsActivity
机器人:screenOrientation =画像>
< /活性GT;
<活动
机器人:名称=GANDActivity
机器人:screenOrientation =画像>
< /活性GT;
<活动
机器人:名称=MetroActivity
机器人:screenOrientation =画像>
< /活性GT;
<活动机器人:名称=AddItemActivity>
< /活性GT;
<活动
机器人:名称=。AboutUsActivity
机器人:screenOrientation =画像>
< /活性GT;
< /用途>
< /舱单>
但我得到异常:
10-01 23:00:29.227:W / CaptureActivity(539):android.content.pm.PackageManager $的NameNotFoundException:com.google.zxing.client.android
10-01 23:00:29.227:W / CaptureActivity(539):在android.app.ContextImpl $ ApplicationPackageManager.getPackageInfo(ContextImpl.java:1682)
10-01 23:00:29.227:W / CaptureActivity(539):在com.google.zxing.client.android.CaptureActivity.showHelpOnFirstLaunch(CaptureActivity.java:693)
10-01 23:00:29.227:W / CaptureActivity(539):在com.google.zxing.client.android.CaptureActivity.onCreate(CaptureActivity.java:169)
10-01 23:00:29.227:W / CaptureActivity(539):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-01 23:00:29.227:W / CaptureActivity(539):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
10-01 23:00:29.227:W / CaptureActivity(539):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
10-01 23:00:29.227:W / CaptureActivity(539):在android.app.ActivityThread.access $ 1500(ActivityThread.java:117)
10-01 23:00:29.227:W / CaptureActivity(539):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:931)
10-01 23:00:29.227:W / CaptureActivity(539):在android.os.Handler.dispatchMessage(Handler.java:99)
10-01 23:00:29.227:W / CaptureActivity(539):在android.os.Looper.loop(Looper.java:123)
10-01 23:00:29.227:W / CaptureActivity(539):在android.app.ActivityThread.main(ActivityThread.java:3683)
10-01 23:00:29.227:W / CaptureActivity(539):在java.lang.reflect.Method.invokeNative(本机方法)
10-01 23:00:29.227:W / CaptureActivity(539):在java.lang.reflect.Method.invoke(Method.java:507)
10-01 23:00:29.227:W / CaptureActivity(539):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)
10-01 23:00:29.227:W / CaptureActivity(539):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
10-01 23:00:29.227:W / CaptureActivity(539):在dalvik.system.NativeStart.main(本机方法)
解决方案
这个问题的原因是在 showHelpOnFirstLaunch()
在CaptureActivity方法。它试图获取版本 com.google.zxing.client.android
包装,没有发现它,并抛出异常。它必须由赶上(PackageManager.NameNotFoundException E)被逮住{...}
。我不知道为什么异常未被捕获。
您可以编辑 showHelpOnFirstLaunch()
的方法,如除去包版本的检查或添加异常捕获如果你还没有在你的版本。
I am using zxing library, where I have built ZXing Android using Eclipse and included ZXing Android into my project and the poject manifest is
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="phoenix.metro.uis"
android:versionCode="4"
android:versionName="1.2" >
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:icon="@drawable/metro"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar" >
<activity
android:name="MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" >
</activity>
<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>
<activity android:name=".PhoenixSplashActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="SearchActivity"
android:multiprocess="false"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="OffersActivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".CartsActivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="GANDActivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="MetroActivity"
android:screenOrientation="portrait" >
</activity>
<activity android:name="AddItemActivity" >
</activity>
<activity
android:name=".AboutUsActivity"
android:screenOrientation="portrait" >
</activity>
</application>
</manifest>
but I get the exception :
10-01 23:00:29.227: W/CaptureActivity(539): android.content.pm.PackageManager$NameNotFoundException: com.google.zxing.client.android
10-01 23:00:29.227: W/CaptureActivity(539): at android.app.ContextImpl$ApplicationPackageManager.getPackageInfo(ContextImpl.java:1682)
10-01 23:00:29.227: W/CaptureActivity(539): at com.google.zxing.client.android.CaptureActivity.showHelpOnFirstLaunch(CaptureActivity.java:693)
10-01 23:00:29.227: W/CaptureActivity(539): at com.google.zxing.client.android.CaptureActivity.onCreate(CaptureActivity.java:169)
10-01 23:00:29.227: W/CaptureActivity(539): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-01 23:00:29.227: W/CaptureActivity(539): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
10-01 23:00:29.227: W/CaptureActivity(539): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
10-01 23:00:29.227: W/CaptureActivity(539): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
10-01 23:00:29.227: W/CaptureActivity(539): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
10-01 23:00:29.227: W/CaptureActivity(539): at android.os.Handler.dispatchMessage(Handler.java:99)
10-01 23:00:29.227: W/CaptureActivity(539): at android.os.Looper.loop(Looper.java:123)
10-01 23:00:29.227: W/CaptureActivity(539): at android.app.ActivityThread.main(ActivityThread.java:3683)
10-01 23:00:29.227: W/CaptureActivity(539): at java.lang.reflect.Method.invokeNative(Native Method)
10-01 23:00:29.227: W/CaptureActivity(539): at java.lang.reflect.Method.invoke(Method.java:507)
10-01 23:00:29.227: W/CaptureActivity(539): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
10-01 23:00:29.227: W/CaptureActivity(539): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
10-01 23:00:29.227: W/CaptureActivity(539): at dalvik.system.NativeStart.main(Native Method)
解决方案
Reason of the issue is in the showHelpOnFirstLaunch()
method in CaptureActivity. It tries to get version of com.google.zxing.client.android
package, doesn't find it and throws the exception. It must be catched by catch (PackageManager.NameNotFoundException e) { ... }
. I don't know why exception is not catched.
You can edit showHelpOnFirstLaunch()
method, e.g. remove the checking of package version or add exception catching if you haven't it in your version.