Neden bu kadar çok uygulama telefonun durumunu ve kimliğini okumak için izin istiyor?


88

Neden bu kadar çok uygulama telefonun durumunu ve kimliğini okumak için izin istiyor? özellikle:

Phone calls
   read phone state and identity

Örneğin, Quickpedia bir Wikipedia portalı, ancak telefona erişmek istiyor. Bunun açıklaması nedir?

görüntü tanımını buraya girin


Gerçekten de değil, "evet, bu uygulama, sms göndermek ve arkanızda premium bir numara çalmak" için bu izni vardır ki bu, insanların varsaydığı şeydir . @ Christian'ın aşağıdaki cevabı kafasına çiviyi vurdu! Birçok durumda meşrudur ve çoğu zaman devs izinleri aşağıya indirmeyi unutur (belki de bir uygulamanın geliştirilmesinin ilk günlerinden kalma).
t0mm13b

1
@ t0mm13b Teknisyenler ve mahremiyet meraklıları dışındaki hanehalkı izinlerinin (kendi kendine dahil) fazla bir talep olduğunu sanmıyorum. Bu nedenle, uygulama yapıcılar tam izin grubunu gerektirme normunu yaparlarsa , tüketiciler herhangi bir uygulama için çok sayıda izinlerin uygun olduğunu varsayacaktır. Hükümet asgari izinleri kullanmaları için onlara baskı yapmıyor ve şu ana kadar piyasa onlara baskı yapmıyor. Yani, uygulamaların çok sayıda izin gerektirmesi için çok az maliyetlidir.
user29020

Yanıtlar:


59

Uygulamaya, telefonunuzla ilişkilendirilmiş benzersiz bir kimliği ( IMEI adında bir telefon tanımlayıcısı ) okuma izni verir .

Bu nedenle, kopya korumasına veya kullanıcı sayısını izleme girişiminde yardımcı olabilir.


3
Bir telefonun benzersiz bir kimliğini alma hakkındaki bu SO sorusuna bakın, bir geliştiricinin bir telefondan benzersiz bir kimlik alması için (şu anda) en güvenilir yolu gibi görünüyor. Read Phone State izni gerektirir. Stackoverflow.com/questions/2785485/…
GAThrawn

40

Bunun benzersiz kimlikten başka bir nedeni var. Uygulamaların yarısının bu değerlere hiç erişmediğini tahmin ediyorum. Sorun, Android 1.5'e kadar daha düşük bir sürüm için bu iznin mevcut olmamasıdır. Herkes bir şey talep etmeden bu değerlere erişebilir.

Bu nedenle, 1.5 ile uyumlu bir uygulama oluşturursanız, bu izin Android 1.5'in daha düşük güvenliğini taklit etmek için otomatik olarak eklenecektir, çünkü bu izni çoğu zaman görmezlikten gelebilirsiniz çünkü yalnızca bir uyumluluk sorunu olabilir.


2
Aynısı SD kart erişiminde de olur.
Denis Nikolaenko

1
Bu doğru - ancak neden 2.x ve daha fazla uygulama için bu kadar sık ​​istediğini açıklamıyor.
Izzy

19

Bunun nedeni, Android 1.5 ve daha önceki sürümlerin, uygulamanın bu izinleri istemesini ve otomatik olarak vermesini gerektirmemesiydi. Android 1.6'dan bu yana, bu izinlerin uygulama tarafından özel olarak talep edilmesi gerekiyor. Ancak, uygulamanızın Android 1.5 ve daha düşük olan cihazlarda çalışabileceğini belirtirseniz, bu izin uygulamaya varsayılan olarak eklenir ve piyasa bu iznin uygulama tarafından istendiğini gösterir.

Dolayısıyla, özet olarak, uygulama aslında "telefon durumunuza ve kimliğinize" erişmiyor olabilir, ancak geliştirici, uygulamasının 1.5 veya daha az olan cihazlarda çalışabileceğini belirtmişse, bu izin gösterilecektir.


Bunu gösteren herhangi bir belgeye bir link var mı?
GAThrawn


developer.android.com/reference/android/os/… , hedef sürüm tanımlayıcılarının tam bir listesini ve bunlar arasındaki izinlerdeki (diğer farklılıklar arasında) değişikliklerin bir listesini verir.
Stewart,

Sağ. Ama muhtemelen artık "ilginç" değil, 1.5 ve daha düşük uygulamalar için oldukça nadir hale geldi :)
Izzy

18

Bu soru beni oldukça uzun zamandır rahatsız ediyor. Şimdi, nihayet, konunun en altına almaya karar verdim.

Playstore adında bir uygulama vardır permission.READ_PHONE_STATE istediğinde, READ_PHONE_STATEsadece izin olarak ve birlikte ya da kullanmadan erişebilir tüm verileri yazdırmak daha başka bir şey yapmaz. Bunu LG Optimus 4X cihazımda yükledim, Android 4.0.3 hisse senedine dayandırdım ve LBE kullanarak iznini iptal ettim . Aşağıdaki ekran görüntülerinde görüldüğü gibi oldukça ilginç sonuçlar:

1. Ekran görüntüsü Ekran görüntüsü 2 Ekran görüntüsü 3
Uygulama izni ile toplanan bilgiler. READ_PHONE_STATE (daha büyük değişkenler için resimlere tıklayın)

Kolayca görebileceğiniz gibi, bazı bilgiler bile izinsiz erişilemez olsa da, serbestçe erişilebilirdi: posta kutusu numaram (not: Evet, doğru olanı; sağlayıcımla kendi cihazınızdan arama yaparken kısayol olan serbestçe gösterin;) Gördüğünüz ilk ekran görüntüsünün sonunda:

  • CALL_STATE_IDLE. Böylece gelen, giden veya devam eden telefon görüşmesi yapılmaz. Hiçbir uygulamanın, gelen aramalarda kendisini "arka planda" tutmak için bu izne ihtiyacı yoktur.

Mobil verilerin etkin olup olmadığını görmek bile mümkündür ( DATA_DISCONNECTED; bildirim çubuğunda da görebileceğiniz gibi ekran görüntülerini çekerken WiFi üzerindeydim), hangi ülkede bulunduğunuzu, sağlayıcınızı (onunla ilgili bazı teknik veriler de dahil olmak üzere), SIM kartınız varsa veya dolaşımdaysanız.

Dolayısıyla erişilebilir olmayan tek şey verileri tanımlamaktır: IMEI, SIMID, IMSI ve kendi telefon numaranız.

Sonuç: Bu izin yalnızca tanımlama amaçlıdır, başka hiçbir şey için gerekli değildir.

O zaman neden bu kadar çok uygulamaya ihtiyaç var?

  • Reklam modülleri için, büyük olasılıkla 1
  • Dev Çünkü düşünce (burada bazı cevaplar tarafından işaret edildiği gibi) Eğer ihtiyacı 2
  • Söz konusu uygulama (ayrıca) Android 1.5 ve altında çalışacak şekilde tasarlandığından ( Google Play'de listelendiği gibi kolay anlaşılır ).

Bu sırayla olasılıklar IMHO.


Dan'in sohbetteki gönderisine göre 1 Not :

Google Play politikası artık, uygulamaların sizi reklam amaçlarıyla tanımlamak için IMEI'nizi almasını yasaklıyor. Tüm reklam kütüphaneleri Google-Play-Services tarafından sağlanan "reklam kimliğini" kullanacak şekilde güncellendi, bu nedenle IMEI'yi hala bu amaç için kullananlar Google’a bildirilmelidir.

Uygulamanın IMEI'yi ne için kullandığını söylemesinin zor olması nedeniyle, geliştiriciden önce açıklamasını istemeniz gerekir.


2 Başka bir geliştirici beni ince bir farklılığa işaret etti: mevcut arama durumunu okumak için izin gerekli olmasa da (belirttiğim gibi), arama değişiklikleri konusunda bilgilendirilmek için bir dinleyiciyi kaydetmeniz gerekebilir durumu (bkz: Android'de gelen ve giden telefon aramalarını algılama ). Sistem çağrıldığında bunu otomatik olarak ele almanın bir yolu gibi görünse de , bu her zaman uygun olmayabilir: alarm saatinizi düşünün. Gelen bir aramada bunun otomatik olarak durdurulmasını istemeyebilirsiniz - özellikle profilinizin "sessiz" ses seviyesine ayarlandığı zaman.onPause


3 Yine Dan'den bir düzeltme : Uygulamanızın "hedef" sürümü 1.5 ise, yalnızca varsayılan ekstra izni alırsınız. Daha sonraki bir sürümü hedeflerseniz, ancak minimum sürümünüz 1.5 ise, otomatik olarak izin alınamaz.


Güncellemeler

  1. Bir var ki İlginç açık konu (21504) bölmek için READ_PHONE_STATE) bir için ne yapılması gerektiği de gelen çağrıları ve ilgili (telefon tespit) ve kimlik ayrıntıları (IMEI, IMSI, vs) için ikinci bir izin. 11/2011 açıldı, hala işe yaramadı. Eğer ilgilenirse yıldız :)
  2. Ve evet, aynı (tespit gelen aramaları) elde etmek için bir yol var olmadanREAD_PHONE_STATE örneğin olarak, izni Arno Welzel tarafından işaret . Gelen telefonun zil tetikler gibi, bu olay ile kullanılabilecek onAudioFocusChange()bu tetiklenen eğer uygulama kontrol edebilir: herhangi bir özel izin gerektirmez, hangi callstate bir var olup olmadığını görmek için (gerekli herhangi bir özel izni olmadan tekrar) gelen çağrı.

Bence hiçbir uygulamanın gelen aramaların arka planında yapılması için bu izne ihtiyacı olmadığını söyleyen kısmı çıkarmanız gerekiyor. Bu noktayı dipnot 2'de zaten belirtmiştiniz, ancak çelişkili. Ayrıca bkz. Developer.android.com/reference/android/telephony/…
Mikel

@Mikel Kısmen haklısın. Bu izni kullanmak, görevi başarmanın "en kolay" yoludur, ancak tek değil. Bazı geliştiricilerin belirttiği gibi bu işlem yapılabilir (sohbet halindeydi? Maalesef bağlantıyı kaybettim). Pek çok şeyde olduğu gibi, Google’ın API’lerini kullanmak bazı şeyleri başarmayı çok kolaylaştırıyor (uygulamanızı Google eko sistemine de bağlar). Ben bir geliştirici değilim, bu yüzden başka bir yoldan ne kadar fazla iş çıkacağını söyleyemem.
Izzy

Ben de bir Android dev değilim, ve bazı kullanım durumları onPause () kapsamında olduğu gibi sesler katılıyorum. Sadece "Hiçbir uygulamanın bu izne ihtiyacı yok" demek bana yanlış geliyor. "Bazı uygulamalar bu izne ihtiyaç duyabilir" gibi bir şeye benziyor, örneğin arka planda çalışıyorlarsa. Ayrıca, yayın amacını almanın, telefon durumunu tekrar tekrar sorgulamaktan kesinlikle daha verimli olması gerektiğini de unutmayın.
Mikel

@Mikel Güncellememe bakın. Ve evet, “hiç gerek yok” biraz abartılı olabilir. Belki de mevcut tüm taleplerin% 0,5'inde, gerçekten de gerekebilir, alternatif bir seçenek yok onPause(). Ancak kullanmak onAudioFocusChange(), daha az ek yüke de sahip olabilir (küçük oylama daha sonra dikkate alınmayabilir).
Izzy

10

Birçok reklam yayıncısı, bu izni her türlü izleme amacıyla Telefon Kimliği almak için kullanır. Benzersiz bir kimlik bulmanın başka yolları da var, ancak ne yazık ki eski Android sürümlerinde sorunlu (hikaye daha karmaşık, örneğin https://stackoverflow.com/questions/2785485/is-there-a-unique-android- aygıt kimliği veya http://android-developers.blogspot.com/2011/03/identifying-app-installations.html daha eksiksiz bir hikaye için).

Bu nedenle, uygulama reklam kullanıyorsa, uygulamanın kendisinin READ_PHONE_STATE iznine gerçekten ihtiyaç duymaması, yalnızca reklam sağlayıcısının izin vermesi olasılığı oldukça yüksektir.


1
Budur IMHO her şeyin arkasında ana konu! İyi düşündüm.
Izzy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.