2013-01-06 2 views
0

안녕하세요 android가 신작입니다. 나는 바코드 및 QR 코드를 스캐닝하는 데 zxing을 사용해야하는 응용 프로그램을 개발 중입니다. 내 응용 프로그램에서는 제 3 자 소프트웨어를 사용할 수 없습니다. 즉, 내 응용 프로그램에서 이러한 코드 줄을 사용할 수 없다는 뜻입니다.zxing의 ActivityNotFoundException

IntentIntegrator integrator = new IntentIntegrator(shopping.this); 
      integrator.initiateScan(); 

따라서이 튜토리얼을 읽은 후이 코드를 사용했습니다.

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); 

그러나

불행하게도이 나를 위해 예외를 보여주고, 내 총 로그 고양이 출력은 추적 조사

      01-06 06:00:02.131: D/AndroidRuntime(956): Shutting down VM 
        01-06 06:00:02.131: W/dalvikvm(956): threadid=1: thread exiting with uncaught exception (group=0x40a13300) 
        01-06 06:00:02.161: E/AndroidRuntime(956): FATAL EXCEPTION: main 
        01-06 06:00:02.161: E/AndroidRuntime(956): 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-06 06:00:02.161: E/AndroidRuntime(956): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1545) 
        01-06 06:00:02.161: E/AndroidRuntime(956): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1416) 
        01-06 06:00:02.161: E/AndroidRuntime(956): at android.app.Activity.startActivityForResult(Activity.java:3351) 
        01-06 06:00:02.161: E/AndroidRuntime(956): at android.app.Activity.startActivityForResult(Activity.java:3312) 
        01-06 06:00:02.161: E/AndroidRuntime(956): at com.google.zxing.shopping.shopping$1.onClick(shopping.java:99) 
        01-06 06:00:02.161: E/AndroidRuntime(956): at android.view.View.performClick(View.java:4084) 
       01-06 06:00:02.161: E/AndroidRuntime(956):  at android.view.View$PerformClick.run(View.java:16966) 
       01-06 06:00:02.161: E/AndroidRuntime(956):  at android.os.Handler.handleCallback(Handler.java:615) 
        01-06 06:00:02.161: E/AndroidRuntime(956): at android.os.Handler.dispatchMessage(Handler.java:92) 
       01-06 06:00:02.161: E/AndroidRuntime(956):  at android.os.Looper.loop(Looper.java:137) 
       01-06 06:00:02.161: E/AndroidRuntime(956):  at android.app.ActivityThread.main(ActivityThread.java:4745) 
       01-06 06:00:02.161: E/AndroidRuntime(956): at java.lang.reflect.Method.invokeNative(Native Method) 
       01-06 06:00:02.161: E/AndroidRuntime(956):  at java.lang.reflect.Method.invoke(Method.java:511) 
       01-06 06:00:02.161: E/AndroidRuntime(956): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
       01-06 06:00:02.161: E/AndroidRuntime(956):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
       01-06 06:00:02.161: E/AndroidRuntime(956): at dalvik.system.NativeStart.main(Native Method) 

같다하지만 난 그냥이 라인이 라인

Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 

를 교체 할 때

Intent intent = new Intent(shopping.this, CaptureActivity.class); 

d는 내 응용 프로그램을 실행하면 성공적으로 실행되지만 ** QR 코드 만 스캔하면 바코드에서 작동하지 않습니다. 난 내 매니페스트 파일을 그래서

   <?xml version="1.0" encoding="UTF-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.xyrad.xybuy" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_GPS" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<uses-permission android:name="android.permission.CALL_PHONE" > 
</uses-permission> 
<uses-permission android:name="android.permission.VIBRATE" /> 
<uses-permission android:name="android.permission.FLASHLIGHT" /> 
<uses-permission android:name="android.permission.READ_CONTACTS" /> 
<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> 
<uses-permission android:name="android.permission.BLUETOOTH" /> 

<uses-sdk 
    android:minSdkVersion="7" 
    android:targetSdkVersion="15" /> 

<uses-feature android:name="android.hardware.camera" /> 
<uses-feature 
    android:name="android.hardware.camera.autofocus" 
    android:required="false" /> 
<uses-feature 
    android:name="android.hardware.camera.flash" 
    android:required="false" /> 
<uses-feature android:name="android.hardware.screen.landscape" /> 
<uses-feature 
    android:name="android.hardware.wifi" 
    android:required="false" /> 
<uses-feature 
    android:name="android.hardware.touchscreen" 
    android:required="false" /> 

<application 
    android:hardwareAccelerated="true" 
    android:icon="@drawable/logo_xybuy" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <uses-library 
     android:name="com.google.android.maps" 
     android:required="true" /> 

    <activity 
     android:name=".RegisterCustomer" 
     android:label="@string/title_activity_register_customer" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <!-- BarCodeScanner --> 
    <activity 
     android:name="com.google.zxing.client.android.CaptureActivity" 
     android:clearTaskOnLaunch="true" 
     android:configChanges="orientation|keyboardHidden" 
     android:screenOrientation="landscape" 
     android:stateNotNeeded="true" 
     android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
     android:windowSoftInputMode="stateAlwaysHidden" ><intent-filter> 
      <action android:name="com.google.zxing.client.android.SCAN" /> 

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

     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

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

     <!-- Allow web apps to launch Barcode Scanner by linking to http://zxing.appspot.com/scan. --> 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 

      <data 
       android:host="zxing.appspot.com" 
       android:path="/scan" 
       android:scheme="http" /> 
     </intent-filter> 
     <!-- We also support a Google Product Search URL. --> 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 

      <data 
       android:host="www.google.com" 
       android:path="/m/products/scan" 
       android:scheme="http" /> 
     </intent-filter> 
     <!-- And the UK version. --> 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 

      <data 
       android:host="www.google.co.uk" 
       android:path="/m/products/scan" 
       android:scheme="http" /> 
     </intent-filter> 
     <!-- Support zxing://scan/?... like iPhone app --> 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 

      <data 
       android:host="scan" 
       android:path="/" 
       android:scheme="zxing" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="com.google.zxing.client.android.PreferencesActivity" 
     android:label="@string/preferences_name" 
     android:stateNotNeeded="true" > 
    </activity> 
    <activity 
     android:name="com.google.zxing.client.android.encode.EncodeActivity" 
     android:label="@string/share_name" 
     android:stateNotNeeded="true" > 
     <intent-filter> 
      <action android:name="com.google.zxing.client.android.ENCODE" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
     <!-- This allows us to handle the Share button in Contacts. --> 
     <intent-filter> 
      <action android:name="android.intent.action.SEND" /> 

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

      <data android:mimeType="text/x-vcard" /> 
     </intent-filter> 
     <!-- This allows us to handle sharing any plain text . --> 
     <intent-filter> 
      <action android:name="android.intent.action.SEND" /> 

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

      <data android:mimeType="text/plain" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="com.google.zxing.client.android.history.HistoryActivity" 
     android:label="@string/history_title" 
     android:stateNotNeeded="true" > 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="WelcomeCustomerSplash" > 
    </activity> 
    <activity android:name="HomePage" > 
    </activity> 
    <activity android:name=".buy.BuyClick" > 
    </activity> 
    <activity android:name=".shoppinglistmanage.ShoppingListManageCompulsory" > 
    </activity> 
    <activity android:name=".otw.OtwClick" > 
    </activity> 
    <activity android:name=".buy.ClickIHaveList" > 
    </activity> 
    <activity android:name=".buy.WaitToPopulateData" > 
    </activity> 
    <activity android:name=".buy.ListWithDiscountNetPrice" > 
    </activity> 
    <activity android:name=".buy.PaymentOption" > 
    </activity> 
    <activity android:name=".buy.PurchaseItemList" > 
    </activity> 
    <activity android:name=".buy.UnPurchaseItemList" > 
    </activity> 
    <activity android:name=".googlemap.LocateForNearestStore" > 
    </activity> 
    <activity android:name=".googlemap.WhereIam" > 
    </activity> 
    <activity android:name=".paymentgateway.ShoppingPaymentGatewayPayPalActivity" > 
    </activity> 
    <activity 
     android:name="com.paypal.android.MEP.PayPalActivity" 
     android:configChanges="keyboardHidden|orientation" 
     android:theme="@android:style/Theme.Translucent.NoTitleBar" > 
    </activity> 
    <activity 
     android:name="com.google.zxing.shopping.PurchaseList" 
     android:configChanges="orientation|keyboardHidden" > 
    </activity> 
    <activity android:name="com.google.zxing.shopping.DeviceListActivity" > 
    </activity> 
    <activity android:name="com.google.zxing.shopping.shopping" > 
    </activity> 

    <!-- purchase --> 
    <!-- DeviceList --> 
    <activity android:name="com.google.zxing.shopping.DataLayer" > 
    </activity> 
    <activity android:name="com.xyrad.xybuy.ecommerce.payment.BillingAddress" > 
    </activity> 
    <activity android:name="com.xyrad.xybuy.ecommerce.cart.ListCart" > 
    </activity> 
    <activity android:name="com.xyrad.xybuy.ecommerce.category.ListCategory" > 
    </activity> 
    <activity android:name="com.xyrad.xybuy.ecommerce.subcategory.ListCategorySubCategory" > 
    </activity> 
    <activity android:name="com.xyrad.xybuy.ecommerce.subcategory.TabSubCategory" > 
    </activity> 
    <activity android:name="com.xyrad.xybuy.ecommerce.catalog.ListCatalog" > 
    </activity> 
    <activity android:name="com.xyrad.xybuy.ecommerce.checkout.ListCheckOut" > 
    </activity> 
    <activity android:name="com.xyrad.xybuy.ecommerce.item.ItemDetails" > 
    </activity> 
    <activity android:name="com.xyrad.xybuy.ecommerce.item.ListItem" > 
    </activity> 
    <activity android:name="com.xyrad.xybuy.ecommerce.item.ItemReview" > 
    </activity> 
    <activity android:name="com.xyrad.xybuy.ecommerce.merchant.ListMerchant" > 
    </activity> 
    <activity android:name="com.xyrad.xybuy.ecommerce.merchant.TabMerchant" > 
    </activity> 
    <activity android:name="com.xyrad.xybuy.ecommerce.payment.ModeOfPayment" > 
    </activity> 
    <activity android:name="com.xyrad.xybuy.ecommerce.offer.ListOffer" > 
    </activity> 
    <activity android:name="com.xyrad.xybuy.ecommerce.payment.Payment" > 
    </activity> 
    <activity android:name="com.xyrad.xybuy.ecommerce.category.TabCategry" > 
    </activity> 
    <activity android:name="com.xyrad.xybuy.ecommerce.item.TabItem" > 
    </activity> 
    <activity android:name="com.xyrad.xybuy.ecommerce.item.TabItemDetails" > 
    </activity> 
    <activity android:name="com.xyrad.xybuy.ecommerce.item.TabItemDetailsAndReview" > 
    </activity> 
    <activity android:name="com.xyrad.xybuy.ecommerce.deparment.ListDepartment" > 
    </activity> 
    <activity android:name="com.xyrad.xybuy.ecommerce.catalog.TabCatalog" > 
    </activity> 
    <activity android:name="com.xyrad.xybuy.ecommerce.subcategory.TabSubCategoryegory.TabSubCategoryegory.TabSubCategory" > 
    </activity> 
</application> 

<!-- Category --> 

, 내 문제의이 내 설명을 보여려고하고 도움을 원하는 사람들의 편의를 위해 . 그러니 제발 좀 도와주세요. 나는 내 마음의 근원에서 모든 사람에게 정말로 감사 할 것이다. 미리 감사드립니다.

답변

0

Zxing 응용 프로그램이 장치에 설치되어 있지 않으므로 ActivityNotFoundException이 발생합니다. 그래서 설치 여부를 확인하십시오. 그렇지 않다면 사용자를 Zxing의 playstore-page로 리디렉션하십시오.

나는 이것을 위해 몇 가지 코드를 구현했습니다. 필요에 따라 수정하십시오 :

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(); 
     } 
    } 

희망 사항이 도움이 될 수 있습니다! :)

+0

다른 앱을 설치하지 않고도 QR 및 바코드를 스캔 할 수 있습니다. ?? – DilAka

+0

답장을 보내 주셔서 감사합니다. – DilAka

+0

예, 최종 사용자가 앱 스토어에서 명시 적으로 다운로드하지 않고도 빌드에 ZXing 라이브러리를 삽입 할 수 있습니다. – Ahmed

0

휴대 전화 나 에뮬레이터에 응용 프로그램을 실행하는이 타사 응용 프로그램이 설치되어 있습니까?

Android 운영 체제는 활동을 찾을 수 없습니다.

  01-06 06:00:02.161: E/AndroidRuntime(956): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.google.zxing.client.android.SCAN pkg=com.google.zxing.client.android (has extras) } 

응용 프로그램이 휴대 전화에 설치되어 있는지 확인하십시오 (그렇지 않은 경우). 사용자를 playstore의 타사 응용 프로그램으로 안내하십시오.

0

응용 프로그램이 설치되지 않은 것처럼 처리해야하는 사례를 처리 할 수 ​​있도록 제공된 IntentIntegrator 클래스를 사용하십시오.

+0

@hi Sean, 나는 당신이 Google에서 Zxing의 개발자 중 하나임을 알고 있습니다. ((대단한 일 !!)) 이미 IntentIntegrator를 사용했지만, 내 App에서 말했듯이 나는 그런 것을 사용할 수 없습니다. 물건 - 사용자가 내 앱을 사용할 때 스캐너 앱을 설치하기 위해 어떤 유형의 메시지도받지 못합니다. 나는 이미 zxing을 사용했다. 그래서 나는 당신이 어떻게하면 코드에 의해서만 나의 열망을 찾을 수 있는지에 대해서 감사 할 것입니다. – DilAka

+0

무슨 일이 발생합니까 ??? 그것은 Google 놀이를 사용하지 않고 가능합니까 ?? – DilAka

+0

나는 이해하지 못한다. 당신은 의도에 의해 통합하고 당신이 의도에 의해 통합 할 수 없다고 말합니다. –

관련 문제