Android/에러

[Android] NameNotFoundException 해결 방법

Comi-ing 2024. 7. 9. 20:30

개발을 진행하다가 chrome과 webview의 버전을 가져오는 코드를 작성했는데, 다음과 같은 에러가 발생했다.

android.content.pm.PackageManager$NameNotFoundException: com.android.chrome
android.content.pm.PackageManager$NameNotFoundException: com.google.android.webview


에러 원인

해당 에러는 com.android.chrome과 com.google.android.webview 패키지를 찾을 수 없다는 뜻이다.

발생 가능한 원인으로는 1) 앱이 설치되어 있지 않음 2) 사용 권한이 부족함 이 있는데, 나의 경우 chrome과 webview는 설치가 되어 있었기 때문에 권한 관련해서 수정을 해보기로 했다.


에러 해결 방법

Android 11(API 30) 부터는 앱이 모든 패키지를 쿼리할 수 있는 권한을 얻기 위해서 ‘QUERY_ALL_PACKAGES’ 권한을 명시적으로 요청해야 한다.

따라서, Android 11 이전 버전이라면 같은 코드여도 정상 동작하지만, 모든 기기를 대응하기 위해서는 해당 코드를 추가해야 한다.


AndroidManifest.xml 파일에 다음 권한을 추가하면 끝이다.

<uses-pemission android:name="android.permission.QUERY_ALL_PACKAGES" />


이 코드로 패키지 정보에 엑세스할 수 있는 권한을 줌으로써 해결이 가능하다.