많은 응용 프로그램에서 전화 상태 및 ID를 읽을 수있는 권한이 필요한 이유는 무엇입니까? 구체적으로 :
Phone calls
read phone state and identity
예를 들어 Quickpedia는 Wikipedia 포털이지만 전화에 액세스하려고합니다. 이에 대한 설명은 무엇입니까?
많은 응용 프로그램에서 전화 상태 및 ID를 읽을 수있는 권한이 필요한 이유는 무엇입니까? 구체적으로 :
Phone calls
read phone state and identity
예를 들어 Quickpedia는 Wikipedia 포털이지만 전화에 액세스하려고합니다. 이에 대한 설명은 무엇입니까?
답변:
앱이 휴대 전화 와 연결된 고유 ID ( IMEI 라는 전화 식별자 ) 를 읽을 수 있도록합니다 .
따라서 복사 방지 또는 사용자 수를 추적하는 데 도움이 될 수 있습니다.
고유 ID 이외의 다른 이유가 있습니다. 앱의 절반이 해당 값에 전혀 액세스하지 않는 것 같습니다. 문제는 Android 1.5 이하의 하위 버전에서는이 권한이 존재하지 않는다는 것입니다. 모든 사람은 무언가를 요구하지 않고이 값에 접근 할 수 있습니다.
따라서 1.5와 호환되는 앱을 만들면이 권한이 자동으로 추가되어 Android 1.5의 낮은 보안 수준을 에뮬레이트하므로 호환성 문제 일 뿐이므로 대부분의 경우이 권한을 무시할 수 있습니다.
그 이유는 Android 1.5 및 이전 버전에서는 애플리케이션이 해당 권한을 구체적으로 요청하고 자동으로 권한을 부여 할 필요가 없었기 때문입니다. Android 1.6부터 앱에서 해당 권한을 구체적으로 요청해야합니다. 그러나 Android 1.5 이하의 기기에서 애플리케이션을 실행할 수 있도록 지정하면 기본적으로 해당 권한이 애플리케이션에 추가되고 시장에서 해당 권한이 애플리케이션에서 요청한 것으로 표시됩니다.
요약하면 응용 프로그램이 실제로 "전화 상태 및 ID"에 액세스하지 않을 수도 있지만 개발자가 자신의 응용 프로그램이 1.5 이하의 장치에서 실행될 수 있도록 지정한 경우 해당 권한이 표시됩니다.
이 질문은 꽤 오랫동안 나를 괴롭 혔습니다. 그래서 마침내, 나는 문제의 바닥에 도달하기로 결정했습니다.
Playstore에는 permission.READ_PHONE_STATE 라는 앱이 있습니다.이 앱 READ_PHONE_STATE
은 유일한 권한으로 요청 하며 사용 여부에 관계없이 액세스 할 수있는 모든 데이터를 인쇄하는 것 외에는 아무것도하지 않습니다. LG Optimus 4X 에 Android 4.0.3을 기반으로 설치하고 LBE를 사용하여 권한을 취소했습니다. 다음 스크린 샷과 같이 꽤 흥미로운 결과 :
앱 권한으로 수집 한 정보입니다 .READ_PHONE_STATE (더 큰 변형을 보려면 이미지를 클릭하십시오)
쉽게 알 수 있듯이, 허가 없이는 액세스 할 수 없었지만 개발자가 일부 정보에도 자유롭게 액세스 할 수있었습니다. 자유롭게 표시;) 첫 번째 스크린 샷이 끝나면 다음과 같이 표시됩니다.
CALL_STATE_IDLE
. 따라서 전화가 걸려 오거나 나가거나 진행 중이 아닙니다. 어떤 앱도 걸려 오는 전화에 "배경"하기 위해이 권한이 필요하지 않습니다.모바일 데이터가 활성화되어 있는지 여부 ( DATA_DISCONNECTED
; 알림 표시 줄에서 볼 수 있듯이 스크린 샷을 찍을 때 WiFi를 사용하고 있음), 현재 거주하는 국가, 공급자 (기술 자료 포함) 여부를 확인할 수도 있습니다. SIM 카드가 있거나 로밍중인 경우
IMEI, SIMID, IMSI 및 자신의 전화 번호와 같이 액세스 할 수 없는 유일한 데이터는 데이터를 식별하는 것 입니다.
결론 : 이 권한은 식별 목적으로 만 필요합니다.
그렇다면 왜 그렇게 많은 앱이 필요합니까?
이 순서대로 정확하게 IMHO.
(1) 에 의해 주 채팅에 댄의 게시물 :
Google Play 정책에 따라 앱에서 IMEI가 광고 목적으로 귀하를 식별하지 못하도록 금지하고 있습니다. Google-Play-Services에서 제공 한 "광고 ID"를 사용하도록 모든 광고 라이브러리가 업데이트되었으므로이 목적으로 여전히 IMEI를 사용하는 모든 항목은 Google에보고해야합니다.
사용자가 앱에서 IMEI를 사용하는 내용을 말하기가 어렵 기 때문에 개발자에게 먼저 설명하도록 요청해야합니다.
2 다른 개발자가 방금 미묘한 차이점을 지적 했습니다. 현재 통화 상태 를 읽을 수 있는 권한이 필요하지 않지만 (내가 지적한 것처럼) 통화 변경 에 대한 알림 을 받으려면 리스너 를 등록해야 할 수도 있습니다 상태 ( Android에서 수신 및 발신 전화 감지 참조 ). 시스템이를 호출 할 때이를 자동으로 처리하는 방법이있는 것 같지만 항상 적합하지 않을 수도 있습니다. 알람 시계를 고려하십시오. 수신 전화에서 자동으로 중지 하지 않으려는 경우가 있습니다. 특히 프로필이 벨소리 볼륨 "음소거"로 설정되어 있지 않은 경우에는 그러하지 않습니다.onPause
3 Dan 의 수정 사항 : 앱의 "대상"버전이 1.5 인 경우에만 기본 추가 권한을 얻습니다. 이후 버전을 대상으로하지만 최소 버전이 1.5 인 경우 권한이 자동으로 추가되지 않습니다.
READ_PHONE_STATE
. 2011 년 11 월에 문을 열었지만 여전히 작동하지 않습니다. 관심이 있다면 별표 표시하십시오. :)READ_PHONE_STATE
예를 들어이 같은 권한을 아르노 Welzel에 의해 지적했다 . 전화가 걸려 오면 벨소리가 울리기 때문에이 이벤트 는와 함께 사용할 수 있으며 특별한 권한이 필요하지 않습니다. 이 이벤트 onAudioFocusChange()
에 의해 트리거되는 경우 앱은 CallState를 확인하고 (특별한 권한이 필요하지 않은 경우에도) 수신 전화.onPause()
채팅에 대해 논의한 것이 었습니다! 그러나 사용 onAudioFocusChange()
하면 오버 헤드가 적을 수 있습니다 (그러면 폴링이 거의 무시할 수 있음).
많은 광고 게시자가이 권한을 사용하여 모든 종류의 추적 목적으로 전화 ID를 얻습니다. 고유 ID를 얻는 다른 방법이 있지만 불행히도 이전 Android 버전에서는 버그가 있습니다 (이야기는 더 복잡합니다 (예 : https://stackoverflow.com/questions/2785485/is-there-a-unique-android- 자세한 내용은 device-id 또는 http://android-developers.blogspot.com/2011/03/identifying-app-installations.html 을 참조하십시오 ).
따라서 앱에서 광고를 사용하는 경우 앱 자체에 실제로 READ_PHONE_STATE 권한이 필요하지 않으며 광고 제공자 만 허용 할 가능성이 있습니다.