2012-01-24 3 views
1

Я последовал следующий урок: http://damianflannery.wordpress.com/2011/06/13/integrate-zxing-barcode-scanner-into-your-android-app-natively-using-eclipse/Получение android.content.ActivityNotFoundException с ZXing

Но даже после редактирования андроида манифеста XML, как сказано там я получаю следующее сообщение об ошибке:

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.google.zxing.client.android.SCAN pkg=com.google.zxing.client.android (has extras) } 

Мой код:

public class BarCodeScannerActivity extends Activity { 
     /** Called when the activity is first created. */ 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 


     Button ok; 

     ok=(Button) findViewById(R.id.b1); 
     ok.setOnClickListener(new View.OnClickListener() 
     { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       System.out.println("Helllllllloooooooo"); 
       Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
      intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE","QR_CODE_MODE");  
       startActivityForResult(intent, 0); 

     } 
    }); 
     } 

    public void onActivityResult(int requestCode, int resultCode, Intent intent) {    
    System.out.println("onActivityResult________resultCode________ "+resultCode); 

    if (requestCode == 0) { 
     if (resultCode == RESULT_OK) {  
      String contents = intent.getStringExtra("SCAN_RESULT"); 
      System.out.println("contentsssssssssssssssssssssss" + contents); 
      Toast.makeText(getApplicationContext(),"Congratulations!!!... Product Code"+ contents + "On Scanning This Item..." ,Toast.LENGTH_LONG).show(); 

      String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); 
      System.out.println("Formaattttttttttttttt " + format); 
      // Handle successful scan  
     } else if (resultCode == RESULT_CANCELED) { 
      // Handle cancel  
      }  
     } 
    } 
    } 

И MainFest файл:

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name=".BarCodeScannerActivity" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 



    </activity> 


    <activity android:name="com.google.zxing.client.android.CaptureActivity" 
    android:screenOrientation="landscape" 
    android:configChanges="orientation|keyboardHidden" 
    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.LAUNCHER" /> 
     </intent-filter> 


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

    </activity> 





</application> 

<uses-permission android:name="android.permission.CAMERA" /> 

Привет

Теперь я получаю странную проблему прикрепленного скриншоте раз я обновил свой манифест следующим образом:

<activity android:name="com.google.zxing.client.android.CaptureActivity" 
       android:screenOrientation="landscape" 
       android:configChanges="orientation|keyboardHidden" 
       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.LAUNCHER"/> 
    </intent-filter> 
    <intent-filter> 
    <action android:name="com.google.zxing.client.android.SCAN"/> 
    <category android:name="android.intent.category.DEFAULT"/> 
    </intent-filter> 
    </activity> 
![enter image description here][1] 
<activity android:name=".ScanItemActivity" 
     android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden" 
     android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
     android:windowSoftInputMode="stateAlwaysHidden"> 
     </activity> 

Я имею в виду, что говорит " «Извините, у камеры Android возникла проблема. Вам может понадобиться перезагрузки устройства.»

Ничего там в LogCat.

+0

Попробуйте вставить '<фильтр-замысел> 'блок в' BarCodeScannerActivity' – Ghost

+0

жаль, что я не получил вас .. я уже добавил эти вещи правильно? – Smitha

+0

Также попробуйте сделать следующее: Удалите 'com.google.zxing.client.android' из' com.google.zxing.client.android.CaptureActivity' в теге ''. – Ghost

ответ

2

Это совершенно запуталось. Вам не нужно, чтобы изменить свой манифест на всех, если вы интегрирование по Intent, поэтому удалить все вы изменили только для интеграции.

приложение не установлено, и вы не обрабатываете это правильно. вы должны поймать ActivityNotFoundException, или заранее определить, что приложение, чтобы справиться с Intent установлено.

Но , нет никакой необходимости в такой сложности. См. http://code.google.com/p/zxing/wiki/ScanningViaIntent. Вы можете использовать IntentIntegrator, который делает все это для вас правильно, в нескольких строках кода.

+0

нет .. я не хочу использовать установленное приложение. Если вы проверите блог, который я назвал, вы получите его. – Smitha

+0

Да, я написал код, на котором основан блог: Я понимаю, что вы смешиваете две несвязанные вещи. Если вы пытаетесь внедрить декодер, вы не используете Intents. Но если вы новичок в этом, я настоятельно рекомендую вам использовать Intents, так как я думаю, что это справедливо бит изощренности, чтобы создать собственное приложение сканера (то есть не копировать и вставлять нашу де). –

+0

yep..thanks Sean. – Smitha

Смежные вопросы