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?
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?
Yanıtlar:
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.
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.
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.
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_STATE
sadece 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:
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?
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.
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 :)READ_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ı.onPause()
. Ancak kullanmak onAudioFocusChange()
, daha az ek yüke de sahip olabilir (küçük oylama daha sonra dikkate alınmayabilir).
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.