프로그래밍/android 53

안드로이드 해시키 생성 (feat. 터미널)

자주 사용하지는 않지만 가끔씩 서드파티 연동할 때마다 등록해주어야 하는 해시키. 해시키 생성방법을 외울수가 없으니 매번 검색하게 되는데, 그럴바에는 내 블로그에 적어두자. keytool -exportcert -alias [key별칭] -keystore [key경로] | openssl sha1 -binary | openssl base64 안드로이드 디버깅 키를 예로 들면 아래와 같다. keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

[android] FragmentPagerAdapter, setUserVisibleHint deprecated

FragmentPagerAdapter(FragmentManager)은 deprecated 되었다. FragmentPagerAdapter(FragmentManager, int) 형태로 써 주어야 한다. deprecated class MyPagerAdapter(fm: FragmentManager): FragmentPagerAdapter(fm){ } solved @SuppressLint("WrongConstant") class MyPagerAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT){ } 그리고 setUserVisibleHint 함수도 deprecated 되었다. setUserVisib..

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

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

[android] android 10에서 외부 폴더 접근하기 #requestLegacyExternalStorage

android targetSdkVersion을 29로 올렸을 때 갤러리나 외부 폴더/파일 접근하는데 오류가 발생한다면, AndroidManifest.xml의 에 아래 코드를 추가해야 한다. 그래야만 Android 10이 설치 된 핸드폰에서 정상 동작을 하게 된다. 하지만 임시 방편일 뿐, targetSdkVersion을 30으로 올리게 되면 다시 막힌다. 앱이 폰에 설치되어 있는 상태에서 targetSdkVersion을 30으로 올린 후 업데이트를 하면 문제가 발생하지 않는다. 그러나 지웠다가 새로 설치를 한 경우 또는 신규로 설치를 하는 경우에는 오류가 발생한다. 이에 대한 근본적인 해결책은 SAF(Storage Access Framework)를 이용하는 방법이라고 하니, 이참에 공부해두자. 저장소 액..

[android] Android 11, targetSdkVersion 30 전화번호 읽기 권한 READ_PHONE_STATE, READ_PHONE_NUMBERS

우선 Android 11의 권한 업데이트 관련 글을 읽어보자. Android 11은 파일접근, 전화번호 읽어오기, 이번만 허용 등 보안관련 사항이 많이 변경 되었다. developer.android.com/about/versions/11/privacy/permissions?hl=ko Android 11의 권한 업데이트 | Android 개발자 | Android Developers Android 11에서는 사용자가 위치, 마이크, 카메라에 관해 더욱 세분화된 권한을 지정할 수 있습니다. 또한 시스템은 Android 11 이상을 타겟팅하는 사용하지 않는 앱의 권한을 재설정하며 앱은 시스 developer.android.com 즉, 폰의 전화번호를 읽어오기 위해서 이제부터는 READ_PHONE_NUMBERS를..

[android] 안드로이드 빠른 스플래시 처리 (#splash)

앱을 처음 켜면 잠시동안 하얗게 나오는 순간이 있다. 혹시라도 폰에 부하가 걸려서 조금이라도 버벅이면 하얀 화면이 꽤나 오랫동안 노출되기도 한다. 그러다가 스플래시는 보이지도 않고 화면이 바로 넘어갈 때도 가끔 있다. 대부분 SplashActivity의 onCreate()안에 setContentView(R.layout.activity_splash)를 넣을 경우 이런 현상이 발생하게 되는데, AndroidManifest에 style을 적용하면 이 같은 현상을 방지할 수 있다. res/drawable/splash.xml styles.xml AndroidManifest.xml

[kotlin] 안드로이드 권한처리 onRequestPermissionsResult (한번에 여러개 요청, 다시묻지않기 체크)

android 6.0 마시멜로부터 런타임 권한 처리가 추가되었다. 예를 들어서 카메라와 갤러리를 호출하기 위해서는 접근 권한이 필요한데, 6.0 이전까지는 AndroidManifest에 사용할 permission만 추가하면 되었지만 이제는 앱 사용 중 실제로 접근하는 시점에 권한을 허용했는지 체크하여 처리를 해야한다. 카메라, 갤러리 뿐만 아니라 전화번호부 읽어오기, 직접 전화 걸기 등 앱을 사용하면서 체크해야 할 권한의 종류가 굉장히 많은데, 카메라와 사진첩(갤러리) 접근 권한으로 안드로이드 권한처리에 대하여 알아보자. 1. AndroidManifest.xml 파일에 선언 2. 권한요청 fun requestPermissions(): Boolean { if(ContextCompat.checkSelfPer..