#android #zxing #google-goggles
#Android #zxing #google-goggles
Вопрос:
Я использую следующий код для вызова приложений для сканирования штрих-кодов из Zing
public Button.OnClickListener mScan = new Button.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, 0);
}
};
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
String contents = intent.getStringExtra("SCAN_RESULT");
String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
// Handle successful scan
} else if (resultCode == RESULT_CANCELED) {
// Handle cancel
}
}
}
Проблема в том, что если приложение для сканирования штрих-кодов не установлено, и у пользователя есть любое другое приложение для сканирования, такое как Google goggles, я не получаю желаемого результата.Это нарушает работу моего приложения.
Есть ли какой-либо способ, которым я могу предотвратить это??
Ответ №1:
Да. вызов Intent.setPackage()
со значением «com.google.zxing.client.android». Это заставит его принимать ответ только от сканера штрих-кода.
Однако обратите внимание, что это сделает невозможным ответ других приложений, таких как сканер штрих-кода .
Комментарии:
1. Вы могли бы повторить результат
PackageManager.queryIntentActivities
и проверить белый список приложений, а затем использовать любое допустимое имя пакета вIntent.setPackage()
2. спасибо, это сработало, каким в идеале должен быть белый список?? Сканер штрих-кода, сканер штрих-кода и что еще??
3. Это все. com.google.zxing.client.android, com.srowen.bs.android и com.srowen.bs.android.simple. Я соответствующим образом перепишу код интеграции.
4. Просто для тех, кому интересно, если вы хотите принудительно использовать Google Goggles, строка «intent.setPackage («com.google.android.apps.unveil»)`. Я бы все равно рекомендовал использовать версию zxing .. это отличный проект.
5. OP сказал, что Goggles отвечает не так, как ожидалось — у кого-нибудь есть дополнительная информация об этом? К вашему сведению, я включил это изменение в код интегратора: code.google.com/p/zxing/source/browse /…
Ответ №2:
лучше интегрировать сканер штрих-кода в ваше приложение. Zxing — это открытый исходный код, который вы можете скачать здесь. И для интеграции, пожалуйста, обратитесь к этому:http://www.falatic.com/index.php/12/building-zxing-for-android-part-3-using-eclipse . Я думаю, это решит вашу проблему.
Комментарии:
1. Мы не рекомендуем интегрировать код подобным образом. В любом случае нет необходимости решать эту проблему.