“Android 로봇은 Google에서 제작하여 공유한 저작물을 복제하거나 수정한 것으로 Creative Commons 3.0 저작자 표시 라이선스의 약관에 따라 사용되었습니다.”
개인 프로젝트를 하고있던 중 공유 기능이 필요해서
이미지 공유 기능을 작성하고 있었는데 낯익은 실선 하나를 발견했다.
아..
하지만 놀랄 것 없다.
똑같은 이름에 매개변수가 하나 더 추가된 형태로 대체되었기 때문이다.
public T getParcelableExtra (String name, Class
<T>
clazz)
// 기존 방식
val uri = intent.getParcelableExtra(Intent.EXTRA_STREAM) as? Uri
// Android 13 이상
val uri = intent.getParcelableExtra(Intent.EXTRA_STREAM, Uri::class.java)
기존에는 <T>
제네릭 타입을 반환하여 캐스팅을 해주어야했던 과정을 생략할 수 있도록 바뀐 거 같다.
매개변수에 캐스팅 하고싶은 클래스를 넣어주면 해당 클래스로 반환 받을 수 있어
캐스팅 과정 생략이 가능하다.
안드로이드 버전을 고려해서 버전 분기한 코드는 아래와 같다.
val uri = if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
intent.getParcelableExtra(Intent.EXTRA_STREAM, Uri::class.java)
} else {
intent.getParcelableExtra(Intent.EXTRA_STREAM) as? Uri
}
개인적으로 공부했던 것을 바탕으로 작성하다보니
잘못된 정보가 있을수도 있습니다.
인지하게 되면 추후 수정하겠습니다.
피드백은 언제나 환영합니다.
읽어주셔서 감사합니다.