Получение android.content.ActivityNotFoundException с Zxing

1

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

Но даже после редактирования android manifest 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 возникла проблема. Возможно, вам придется перезапустить устройство ".

В лог-кате нет ничего.

  • 0
    Попробуйте вставить <intent-filter> <action android:name="com.google.zxing.client.android.SCAN" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> блок в BarCodeScannerActivity
  • 0
    извините, я вас не понял .. я уже добавил эти вещи правильно?
Показать ещё 6 комментариев
Теги:
android-activity
barcode
zxing

1 ответ

2

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

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

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

  • 0
    нет .. я не хочу использовать установленное приложение. Если вы проверите блог, на который я ссылался, вы получите его.
  • 0
    Да, я написал код, на котором основан блог: я понял. Вы смешиваете две несвязанные вещи здесь. Если вы пытаетесь встроить декодер, вы не используете Intents. Но если вы новичок в этом, я настоятельно рекомендую вам использовать Intents, так как я думаю, что для создания собственного приложения для сканера требуется немало изощренности (то есть не копирование и вставка нашего кода).
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню