[英]Zxing issue - ActivityNotFoundException
I am getting a Exception
while working with zxing
scanner . 我在使用
zxing
扫描仪时遇到Exception
。 In my application I want to scan Bar
and QR
code by single camera Activity
( CaptureActivity
of zxing). 在我的应用程序中,我想通过单个相机
Activity
(zxing的CaptureActivity
)扫描Bar
和QR
码。 For that I used following code in my app 为此我在我的应用程序中使用了以下代码
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.setPackage("com.google.zxing.client.android");
intent.putExtra("SCAN_MODE", "PRODUCT_MODE");
intent.putExtra("SCAN_FORMATS", "CODE_39,CODE_93,CODE_128,DATA_MATRIX,ITF,CODABAR,EAN_13,EAN_8,UPC_A,QR_CODE");
startActivityForResult(intent, 0);
But i am getting exception:- 但我得到例外: -
01-03 10:28:15.445: E/AndroidRuntime(3405): android.content.ActivityNotFoundException: No Activity found to handle Intent
{ act=com.google.zxing.client.android.SCAN pkg=com.google.zxing.client.android (has extras) }
I can't use 我不能用
IntentIntegrator
in my App. 在我的应用程序中 So please some one help me , to solve this issue.
所以请有人帮助我,解决这个问题。 This is my full log cat output
这是我的完整日志猫输出
01-04 04:58:39.551: D/AndroidRuntime(905): Shutting down VM
01-04 04:58:39.551: W/dalvikvm(905): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
01-04 04:58:39.581: E/AndroidRuntime(905): FATAL EXCEPTION: main
01-04 04:58:39.581: E/AndroidRuntime(905): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.google.zxing.client.android.SCAN pkg=com.google.zxing.client.android (has extras) }
01-04 04:58:39.581: E/AndroidRuntime(905): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1545)
01-04 04:58:39.581: E/AndroidRuntime(905): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1416)
01-04 04:58:39.581: E/AndroidRuntime(905): at android.app.Activity.startActivityForResult(Activity.java:3351)
01-04 04:58:39.581: E/AndroidRuntime(905): at android.app.Activity.startActivityForResult(Activity.java:3312)
01-04 04:58:39.581: E/AndroidRuntime(905): at com.google.zxing.shopping.shopping$1.onClick(shopping.java:98)
01-04 04:58:39.581: E/AndroidRuntime(905): at android.view.View.performClick(View.java:4084)
01-04 04:58:39.581: E/AndroidRuntime(905): at android.view.View$PerformClick.run(View.java:16966)
01-04 04:58:39.581: E/AndroidRuntime(905): at android.os.Handler.handleCallback(Handler.java:615)
01-04 04:58:39.581: E/AndroidRuntime(905): at android.os.Handler.dispatchMessage(Handler.java:92)
01-04 04:58:39.581: E/AndroidRuntime(905): at android.os.Looper.loop(Looper.java:137)
01-04 04:58:39.581: E/AndroidRuntime(905): at android.app.ActivityThread.main(ActivityThread.java:4745)
01-04 04:58:39.581: E/AndroidRuntime(905): at java.lang.reflect.Method.invokeNative(Native Method)
01-04 04:58:39.581: E/AndroidRuntime(905): at java.lang.reflect.Method.invoke(Method.java:511)
01-04 04:58:39.581: E/AndroidRuntime(905): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
01-04 04:58:39.581: E/AndroidRuntime(905): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-04 04:58:39.581: E/AndroidRuntime(905): at dalvik.system.NativeStart.main(Native Method)
Thanks in advance to all 在此先感谢所有人
You are getting ActivityNotFoundException as Zxing application is not installed in your device. 您正在获取ActivityNotFoundException,因为您的设备中未安装Zxing应用程序。 So Please check whether it is installed or not.
所以请检查它是否已安装。 If it's not then redirect user to playstore-page of Zxing:
如果不是那么将用户重定向到Zxing的playstore-page:
I've implemented some code for these. 我为这些实现了一些代码。 Modify it according to your needs:
根据您的需要进行修改:
boolean isZxingInstalled;
/*
*Checking whether Zxing is installed or not
*/
try
{
ApplicationInfo info = getPackageManager().getApplicationInfo("com.google.zxing.client.android", 0 );
boolean isZxingInstalled = true;
}
catch(PackageManager.NameNotFoundException e){
isZxingInstalled=false;
}
/*
* Store the boolean value on the basis of Zxing is installed or not
*/
if(isZxingInstalled) //If it is then intent Zxing application
{
//start the facebook app
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.setPackage("com.google.zxing.client.android");
intent.putExtra("SCAN_MODE", "PRODUCT_MODE");
intent.putExtra("SCAN_FORMATS", "CODE_39,CODE_93,CODE_128,DATA_MATRIX,ITF,CODABAR,EAN_13,EAN_8,UPC_A,QR_CODE");
startActivityForResult(intent, 0);
}
else //It's not then redirect user to PlayStore-ZxingPlage
{
/*
*Checking whether PlayStore is installed in device or not?
*/
boolean isPlayStoreInstalled
try
{
ApplicationInfo i=getPackageManager().getApplicationInfo("com.google.vending", 0 );
boolean isPlayStoreInstalled = true;
}
catch(PackageManager.NameNotFoundException e){
isPlayStoreInstalled=false;
}
/*
* If it is the download Zxing
*/
if(isPlayStoreInstalled)
{
Intent DownloadZxing = new Intent(Intent.ACTION_VIEW,Uri.parse("market://detailsid=com.google.zxing.client.android"));
startActivity(DownloadZxing);
}
else //Toast message indicating No PlayStore Found
{
Toast.makeText(this,"Install PlayStore First",Toast.LENGHT_SHORT).show();
}
}
Hope these may help!! 希望这些可能有帮助!! :)
:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.