프로그래밍/android

[android] targetSdkVersion 30, intent.resolveActivity가 null일때 (feat. MediaStore.ACTION_IMAGE_CAPTURE)

-샤리- 2021. 1. 29. 16:03

targetSdkVersion을 30으로 올린 뒤, Android 11 폰에서 아래 코드의 intent.resolveActivity(packageManager) 값이 null로 반환 되었다.

var intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
intent.resolveActivity(packageManager)

 

아래 링크를 통해서 바뀐 내용을 확인 할 수 있다.

 

Android 11의 패키지 공개 상태  |  Android 개발자  |  Android Developers

Android 11에서는 앱이 사용자가 기기에 설치한 다른 앱을 쿼리하고 상호작용하는 방법을 변경합니다. 요소를 사용하여 앱은 액세스할 수 있는 다른 패키지 집합을 정의할 수 있습니다. 이 요소를

developer.android.com

 

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="xxx.xx.xx">
    
    .
    .
    .
    .
    <queries>
    	<intent>
        	<action android:name="android.media.action.IMAGE_CAPTURE" />
        </intent>
    </queries>
    
</manifest>

 

이처럼 AndroidManifest에 <queries>를 추가하면서 해결하였다.