2011-11-08 41 views
4

我使用下面的代碼從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 
     } 
    } 
} 

調用條碼掃描儀應用程序的問題是,如果沒有安裝條形碼掃描應用程序和用戶有任何其他的掃描應用程序像谷歌護目鏡我沒有得到想要的結果back.This打破了我的申請。

有什麼辦法可以防止這種情況發生?

回答

6

是的。請撥打電話Intent.setPackage(),並輸入值「com.google.zxing.client.android」。這將迫使它只接受條碼掃描器的響應。

但是請注意,這會使其他應用程序無法響應,例如Barcode Scanner +。

+3

您可以遍歷['PackageManager.queryIntentActivities'](http://developer.android.com/reference/android/content/pm/PackageManager.html#queryIntentActivities(android.content.Intent,%20int))的結果並檢查應用程序的白名單,然後在Intent.setPackage()中使用任何有效的軟件包名稱' –

+0

這很好! –

+0

感謝這工作理想情況下應該是白名單?條碼掃描器,條碼掃描器+還有什麼? –