Получение android.content.ActivityNotFoundException с Zxing - PullRequest
1 голос
/ 24 января 2012

Я следовал следующему руководству: http://damianflannery.wordpress.com/2011/06/13/integrate-zxing-barcode-scanner-into-your-android-app-natively-using-eclipse/

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

 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 ничего нет.

1 Ответ

3 голосов
/ 24 января 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...