"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은 패키지 이름입니다.
당신은 어떻게 생겼습니까? 인텐 트 필터에 다음 줄을 추가하여 차이가 있는지 확인하십시오. [이 예제 코드] (http://developer.android .com/resources/faq/framework.html # 7), [here] (http://stackoverflow.com/questions/3510544/android-how-to-intercept-the-install-application-intent)에 앞서 언급했습니다. –
네, 그곳에 있습니다 - (적어도 보이는 것 같이) 패키지 이름이 잘 잡히지 만, 방금 설치 한 것으로서 내 응용 프로그램에 전송 된 이름을 찾을 수 없습니다. 이것 하나에 난리가났다. – Michelle
제가 생각할 수있는 유일한 다른 이유는 패키지 이름에 뭔가가 빠져 있다는 것입니다. 패키지 엔지니어의'getApplicationInfo()'메소드에 대한 호출이 어떻게 될지 예상하지 못한다고 가정 해 봅시다. 메소드가 두 번째 매개 변수로 사용하는 플래그. 관련 코드의 일부를 복사 할 수 있습니까? –