SSISO Community

시소당

QR코드 작업을 수행할 때 사용하는 응용프로그램

스터디 그룹에서 QR코드 관련 앱을 개발중인 경우

여러개의 QR코드 리더기앱이 설치되어 있을때 

"작업을 수행할 때 사용하는 응용프로그램" 

이라는 팝업창이 뜰때가 있습니다.

이걸 막을수 있는 방법이 없을까요?

 

이 문제를 해결하려 한참을 검색하던중 가장 적절한 답변을 찾아서 정리해 두려 합니다.

 

가장 아래 출처를 밝히니 문제가 된다면 삭제하도록 하겠습니다.

 

 

질문에 대한 답변 1

 

죄송한 애기지만 인식이 되지 않았다는건 warmsign님 로직에 문제가 있어서 안되는거 같습니다.

참고로 저는 상용화된 서비스 프로젝트에서 모듈하나만 보여드릴께요

private void scanning() {
  Intent intent = new Intent("com.google.zxing.client.android.SCAN");
  final PackageManager pm = getPackageManager();
  final List<ResolveInfo> matches = pm.queryIntentActivities(intent,0); 
  ResolveInfo best=null; 
  for (final ResolveInfo info : matches) {
  
   if (info.activityInfo.packageName.endsWith(".bds114") || info.activityInfo.name.toLowerCase().contains("CaptureActivity")) best=info; 
  }
  
  if (best!=null) intent.setClassName("com.strastar.bds114", "com.google.zxing.client.android.CaptureActivity"); 
  intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); 
    startActivityForResult(intent, 0);   
 
}
이 모듈은 부동산 qr코드중 기본 qr코드를 사용하라는 모듈인데 저는 이상없이 기본 zxing qr코드 사용하구 인식도 이상없이 서비스를 하고 있습니다.  한번 소스를 살펴보세요.  제가 님소스를 보지 못해서 무엇이 문제인지는 잘모르겠지만
제가 언급한 방법은 일단 제가 사용해서 서비스를 하고 있기 때문에 원인은 warmsign님 로직 문제로 밖에 생각할수 밖에 없습니다. 


질문에 대한 답변 2


해결하였습니다.
일단 패키지명을 바꾸었습니다.
 
Intent intentScan = new Intent("com.google.zxing.client.android.SCAN");
intentScan.addCategory(Intent.CATEGORY_DEFAULT);
intentScan.setClassName("com.xxxx", "com.xxxx.android.CaptureActivity"); 
intentScan.putExtra("SCAN_MODE", "QR_CODE_MODE");
 
이렇게 하고 다른 QR코드 리더기를 설치해도 지정된 내장 QR리더기만 동작하였습니다.
직접적으로 도움을 주신 mbsmin님 정말 감사합니다.....^^

저는 여기서 2번답변을 활용하였으며 내용은 동일합니다.
해당 내용을 안드로이드 스터디 팀원에게 전달하였을때
가장 헷갈려하며 저에게 다시
질문하는 부분이 addClassName() 부분입니다.

addClassName("호출하는 녀석의 패키지명", "호출 당하는 녀석의 풀패키지와 파일이름");

요것만 조심하면 될것 같습니다.

화이팅 입니다. 조금만 더 가면 좋은 결과가 있을겁니다.^^

643 view

4.0 stars