안드로이드

안드로이드 10 cordova-sim 에러와 사용자 번호 읽기

마리오64 2021. 3. 7. 00:58

회사에서 안드로이드 기기의 SIM에서 사용자의 휴대폰번호를

읽어 본인확인하는 아이오닉으로 만들어진 앱이 있었는데요

안드로이드 10부터는 구글의 개인정보 보호 정책 변경으로 IMEI, 디바이스 고유 ID등을 사용할 수 없게되어

플러그인 동작에 에러가 나더군요.

 

 

developer.android.com/about/versions/10/privacy/changes?hl=ko#non-resettable-device-ids

 

Android 10의 개인정보 보호 변경사항  |  Android 개발자  |  Android Developers

Android 10(API 레벨 29)에는 사용자의 개인정보 보호 강화를 위해 많은 기능과 동작 변경사항이 도입되었습니다. 따라서 사용자가 앱에 제공하는 데이터와 기능을 더욱 투명하고 세밀하게 제어할

developer.android.com

android 10 에서 문제가 되는 코드입니다.

deviceId = manager.getDeviceId(simSlotIndex);

디바이스 ID를 찾고있으니 안되는거죠

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M && android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.Q) {
	deviceId = manager.getDeviceId(simSlotIndex);
 }

안드로이드 9이하에서 되게끔 추가하면

sim에서 휴대폰 번호를 읽어오는 부분은 안드로이드 10까지는 잘됩니다.

해당 플러그인 git에 풀리퀘스트로 올라온거 적용해서 저장했네요

github.com/kitrio/cordova-plugin-sim

 

kitrio/cordova-plugin-sim

:cherries: A cordova plugin to get the device's SIM data (carrier name, mcc mnc, country code, telephonenumber, etc) - kitrio/cordova-plugin-sim

github.com

 

다만 안드로이드 11부터는 다른권한이 필요합니다.

바로 READ_PHONE_STATE 권한 대신 READ_PHONE_NUMBERS 권한을 요청해야 합니다.

developer.android.com/about/versions/11/privacy/permissions?hl=ko

 

Android 11의 권한 업데이트  |  Android 개발자  |  Android Developers

Android 11에서는 사용자가 위치, 마이크, 카메라에 관해 더욱 세분화된 권한을 지정할 수 있습니다. 또한 시스템은 Android 11 이상을 타겟팅하는 사용하지 않는 앱의 권한을 재설정하며 앱은 시스

developer.android.com

전화번호 항목을 보시면 자세히 나와있습니다.

 

+ 안드로이드 12 문서를 살펴보는데 안드로이드 12에서도READ_PHONE_NUMBERS 권한있으면

사용자번호 불러오는거 가능합니다.