2011-11-05 4 views
1

"android.intent.action.PACKAGE_ADDED"및 "android.intent.action.PACKAGE_REPLACED"인 텐트가있는 브로드 캐스트 수신기가 있습니다 (패키지가 전화기에 설치되었을 때). , 내 애플 리케이션 패키지 이름으로 의도를 가져옵니다). 그러나 패키지 이름을 사용하여 PackageInfo를 가져 오기 위해 PackageManager를 사용하려고하면 NameNotFoundException이 발생합니다.알려진 패키지 이름이 패키지 관리자와 일치하지 않습니다.

어떤 이유가있을 수 있습니까 (패키지가 존재하지 않는 것 외에는 분명하지 않습니다). 나는 많은 권한을 찾을 수 없다. 오도 된 오류를 일으키는 것이 없다.

try { 
    id = UAppIDUtils.GetUAppID(ctx.getPackageManager().getPackageInfo(pkgName, PackageManager.GET_SIGNATURES)); 
} catch (NameNotFoundException e) { 
    id = null; 
    Log.v(TAG, "Error finding package info"); 
    e.printStackTrace(); 
} 

ctx는 컨텍스트입니다. pkgName은 패키지 이름입니다.

+0

당신은 어떻게 생겼습니까? 인텐 트 필터에 다음 줄을 추가하여 차이가 있는지 확인하십시오. [이 예제 코드] (http://developer.android .com/resources/faq/framework.html # 7), [here] (http://stackoverflow.com/questions/3510544/android-how-to-intercept-the-install-application-intent)에 앞서 언급했습니다. –

+0

네, 그곳에 있습니다 - (적어도 보이는 것 같이) 패키지 이름이 잘 잡히지 만, 방금 설치 한 것으로서 내 응용 프로그램에 전송 된 이름을 찾을 수 없습니다. 이것 하나에 난리가났다. – Michelle

+0

제가 생각할 수있는 유일한 다른 이유는 패키지 이름에 뭔가가 빠져 있다는 것입니다. 패키지 엔지니어의'getApplicationInfo()'메소드에 대한 호출이 어떻게 될지 예상하지 못한다고 가정 해 봅시다. 메소드가 두 번째 매개 변수로 사용하는 플래그. 관련 코드의 일부를 복사 할 수 있습니까? –

답변

1

PACKAGE_ADDED 인 텐트와 함께 제공되는 문자열이 "package :"로 시작되고 패키지 이름이 인쇄 문에서 눈에 띄지 않기 때문에 잡히지 않았 음이 밝혀졌습니다 나는 편지를 쓰지 않았다. 데이터 문자열의 시작 부분에서 레이블을 벗겨 내야 했으므로 나갔으면 좋았습니다.

0

내가이 오류를 만났을 때가 정말 귀찮은 시간은 내가 찾던/의도했던 앱의 패키지 이름이 내가 복사 한 텍스트에 숨겨진 문자가 있었기 때문이었습니다. 그냥주의 깊게 패키지 이름을 다시 입력하거나 로그를 만들어서 당신이 생각하는 것과 다를 수도 있으므로 실제로 찾고있는 패키지 이름을 확인하십시오.

관련 문제