왜 이렇게 많은 응용 프로그램에서 전화 상태 및 ID를 읽을 수있는 권한이 필요한가요?


88

많은 응용 프로그램에서 전화 상태 및 ID를 읽을 수있는 권한이 필요한 이유는 무엇입니까? 구체적으로 :

Phone calls
   read phone state and identity

예를 들어 Quickpedia는 Wikipedia 포털이지만 전화에 액세스하려고합니다. 이에 대한 설명은 무엇입니까?

여기에 이미지 설명을 입력하십시오


그것 정말 사람들이 무엇인가 "예, 예,이 응용 프로그램은 뒤로 프리미엄 번호를 SMS를 보내 울리는이 권한이있다"에 대한 가정을 . 아래의 @Christian의 대답은 머리에 못을 박았습니다! 많은 경우에 합법적이며, 종종 개발자는 권한을 어지럽히는 것을 잊어 버리는 경향이 있습니다 (어쩌면 앱 개발 초기부터 보류).
t0mm13b

1
@ t0mm13b 나는 기술자와 개인 정보 보호 괴짜 (자체 포함) 이외의 권한 감소에 대한 수요가 많지 않다고 생각합니다. 따라서 앱 제조업체 가 전체 권한 모음을 요구 하는 표준 으로 삼는 경우 소비자는 모든 앱에 대해 많은 권한이 적합하다고 가정합니다. 정부는 최소 권한을 사용하도록 압력을 가하지 않았으며, 지금까지 시장은이를 허용하지 않습니다. 즉, 앱이 많은 권한을 요구하는 데 비용이 거의 들지 않습니다.
user29020 2018 년

답변:


59

앱이 휴대 전화 와 연결된 고유 ID ( IMEI 라는 전화 식별자 ) 를 읽을 수 있도록합니다 .

따라서 복사 방지 또는 사용자 수를 추적하는 데 도움이 될 수 있습니다.


3
전화의 고유 ID를 얻는 방법에 대한이 SO 질문을 참조하십시오. 개발자가 전화에서 고유 ID를 얻는 가장 신뢰할 수있는 방법 인 것 같습니다. 전화 상태 읽기 권한 stackoverflow.com/questions/2785485/…
GAThrawn

40

고유 ID 이외의 다른 이유가 있습니다. 앱의 절반이 해당 값에 전혀 액세스하지 않는 것 같습니다. 문제는 Android 1.5 이하의 하위 버전에서는이 권한이 존재하지 않는다는 것입니다. 모든 사람은 무언가를 요구하지 않고이 값에 접근 할 수 있습니다.

따라서 1.5와 호환되는 앱을 만들면이 권한이 자동으로 추가되어 Android 1.5의 낮은 보안 수준을 에뮬레이트하므로 호환성 문제 일 뿐이므로 대부분의 경우이 권한을 무시할 수 있습니다.


2
SD 카드 액세스에서도 마찬가지입니다.
Denis Nikolaenko

1
사실입니다. 그러나 2.x 이상의 앱이 왜 그렇게 자주 원하는지 설명하지 않습니다.
Izzy

19

그 이유는 Android 1.5 및 이전 버전에서는 애플리케이션이 해당 권한을 구체적으로 요청하고 자동으로 권한을 부여 할 필요가 없었기 때문입니다. Android 1.6부터 앱에서 해당 권한을 구체적으로 요청해야합니다. 그러나 Android 1.5 이하의 기기에서 애플리케이션을 실행할 수 있도록 지정하면 기본적으로 해당 권한이 애플리케이션에 추가되고 시장에서 해당 권한이 애플리케이션에서 요청한 것으로 표시됩니다.

요약하면 응용 프로그램이 실제로 "전화 상태 및 ID"에 액세스하지 않을 수도 있지만 개발자가 자신의 응용 프로그램이 1.5 이하의 장치에서 실행될 수 있도록 지정한 경우 해당 권한이 표시됩니다.


이것을 보여주는 문서에 대한 링크가 있습니까?
GAThrawn


developer.android.com/reference/android/os/… 는 대상 버전 식별자의 전체 목록과 이들 사이의 권한 변경 (다른 차이점 중 하나)을 제공합니다.
스튜어트

권리. 그러나 1.5 이하의 앱은 매우 드물기 때문에 더 이상 "흥미로운"것은 아닙니다 :)
Izzy

18

이 질문은 꽤 오랫동안 나를 괴롭 혔습니다. 그래서 마침내, 나는 문제의 바닥에 도달하기로 결정했습니다.

Playstore에는 permission.READ_PHONE_STATE 라는 앱이 있습니다.이 앱 READ_PHONE_STATE은 유일한 권한으로 요청 하며 사용 여부에 관계없이 액세스 할 수있는 모든 데이터를 인쇄하는 것 외에는 아무것도하지 않습니다. LG Optimus 4X 에 Android 4.0.3을 기반으로 설치하고 LBE를 사용하여 권한을 취소했습니다. 다음 스크린 샷과 같이 꽤 흥미로운 결과 :

스크린 샷 1 스크린 샷 2 스크린 샷 3
권한으로 수집 한 정보입니다 .READ_PHONE_STATE (더 큰 변형을 보려면 이미지를 클릭하십시오)

쉽게 알 수 있듯이, 허가 없이는 액세스 할 수 없었지만 개발자가 일부 정보에도 자유롭게 액세스 할 수있었습니다. 자유롭게 표시;) 첫 번째 스크린 샷이 끝나면 다음과 같이 표시됩니다.

  • CALL_STATE_IDLE. 따라서 전화가 걸려 오거나 나가거나 진행 중이 아닙니다. 어떤 앱도 걸려 오는 전화에 "배경"하기 위해이 권한이 필요하지 않습니다.

모바일 데이터가 활성화되어 있는지 여부 ( DATA_DISCONNECTED; 알림 표시 줄에서 볼 수 있듯이 스크린 샷을 찍을 때 WiFi를 사용하고 있음), 현재 거주하는 국가, 공급자 (기술 자료 포함) 여부를 확인할 수도 있습니다. SIM 카드가 있거나 로밍중인 경우

IMEI, SIMID, IMSI 및 자신의 전화 번호와 같이 액세스 할 수 없는 유일한 데이터는 데이터를 식별하는 것 입니다.

결론 : 이 권한은 식별 목적으로 만 필요합니다.

그렇다면 왜 그렇게 많은 앱이 필요합니까?

  • 광고 모듈의 경우 대부분 1
  • 개발자가 필요 하다고 생각 했기 때문에 (여기에서 일부 답변으로 지적한 바와 같이) 2
  • 문제의 앱은 Android 1.5 이하에서 실행되도록 설계 되었기 때문에 ( Google Play에 나열된 것처럼 쉽게 찾을 수 있음 )

이 순서대로 정확하게 IMHO.


(1) 에 의해 주 채팅에 댄의 게시물 :

Google Play 정책에 따라 앱에서 IMEI가 광고 목적으로 귀하를 식별하지 못하도록 금지하고 있습니다. Google-Play-Services에서 제공 한 "광고 ID"를 사용하도록 모든 광고 라이브러리가 업데이트되었으므로이 목적으로 여전히 IMEI를 사용하는 모든 항목은 Google에보고해야합니다.

사용자가 앱에서 IMEI를 사용하는 내용을 말하기가 어렵 기 때문에 개발자에게 먼저 설명하도록 요청해야합니다.


2 다른 개발자가 방금 미묘한 차이점을 지적 했습니다. 현재 통화 상태 를 읽을 수 있는 권한이 필요하지 않지만 (내가 지적한 것처럼) 통화 변경 에 대한 알림 을 받으려면 리스너 를 등록해야 할 수도 있습니다 상태 ( Android에서 수신 및 발신 전화 감지 참조 ). 시스템이를 호출 할 때이를 자동으로 처리하는 방법이있는 것 같지만 항상 적합하지 않을 수도 있습니다. 알람 시계를 고려하십시오. 수신 전화에서 자동으로 중지 하지 않으려는 경우가 있습니다. 특히 프로필이 벨소리 볼륨 "음소거"로 설정되어 있지 않은 경우에는 그러하지 않습니다.onPause


3 Dan수정 사항 : 앱의 "대상"버전이 1.5 인 경우에만 기본 추가 권한을 얻습니다. 이후 버전을 대상으로하지만 최소 버전이 1.5 인 경우 권한이 자동으로 추가되지 않습니다.


업데이트

  1. a) 수신 전화 및 관련 (전화)을 감지하고 식별 세부 사항 (IMEI, IMSI 등)에 대한 두 번째 권한을 감지하는 데 필요한 공개 문제 (21504) 가 있다는 점에 흥미가 있습니다 READ_PHONE_STATE. 2011 년 11 월에 문을 열었지만 여전히 작동하지 않습니다. 관심이 있다면 별표 표시하십시오. :)
  2. 그리고 네, 같은 (감지 걸려 오는 전화) 달성 할 수있는 방법이 없는READ_PHONE_STATE 예를 들어이 같은 권한을 아르노 Welzel에 의해 지적했다 . 전화가 걸려 오면 벨소리가 울리기 때문에이 이벤트 는와 함께 사용할 수 있으며 특별한 권한이 필요하지 않습니다. 이벤트 onAudioFocusChange()에 의해 트리거되는 경우 앱은 CallState를 확인하고 (특별한 권한이 필요하지 않은 경우에도) 수신 전화.

전화가 걸려 올 때 백그라운드로 앱에이 권한이 필요하지 않다고 말하는 부분을 제거해야한다고 생각합니다. 이미 각주 2에서이 점을 지적했지만 모순입니다. 참조 developer.android.com/reference/android/telephony/...
미켈

@Mikel 당신은 부분적으로 옳습니다. 이 권한을 사용하는 것이 작업을 수행하는 가장 쉬운 방법이지만 유일한 방법은 아닙니다. 일부 개발자가 지적한 것처럼 (채팅 중입니까? 불행히도 링크를 잃어 버렸습니다)없이 수행 할 수 있습니다. 많은 것들과 마찬가지로 Google의 API를 사용하면 훨씬 쉽게 달성 할 수 있습니다 (앱을 Google 에코 시스템에 바인딩하는 동안). 저는 개발자가 아니므로 다른 방법으로 더 많은 작업을 의미 할 수 없습니다.
Izzy

나는 아직 안드로이드 개발자가 아니며 일부 유스 케이스가 onPause ()에 의해 다루어지는 것처럼 들린다. "이 권한이 필요없는 앱은 없다"고 말하는 것만으로는 나에게 잘못됩니다. 예를 들어 백그라운드에서 실행되는 경우 "일부 앱에이 권한이 필요할 수 있습니다"처럼 들립니다. 또한 브로드 캐스트 인 텐트를받는 것이 전화 상태를 반복적으로 폴링하는 것보다 훨씬 효율적이어야합니다.
Mikel

@Mikel 내 업데이트를 참조하십시오. 그리고 그렇습니다.“필요하지 않습니다”는 다소 과장된 것일 수 있습니다. 어쩌면 모든 현재 요청의 0.5 %에서 대체 가능한 #D없이 실제로 필요할 수도 있습니다. 그리고 다시 그렇습니다. onPause()채팅에 대해 논의한 것이 었습니다! 그러나 사용 onAudioFocusChange()하면 오버 헤드가 적을 수 있습니다 (그러면 폴링이 거의 무시할 수 있음).
Izzy

10

많은 광고 게시자가이 권한을 사용하여 모든 종류의 추적 목적으로 전화 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 권한이 필요하지 않으며 광고 제공자 만 허용 할 가능성이 있습니다.


1
그게 전부 뒤에있는 주요 문제입니다! 잘 생각했습니다.
Izzy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.