Mengapa begitu banyak aplikasi memerlukan izin untuk membaca status dan identitas ponsel?

88

Mengapa begitu banyak aplikasi memerlukan izin untuk membaca status dan identitas ponsel ?. Secara khusus:

Phone calls
   read phone state and identity

Misalnya Quickpedia adalah portal Wikipedia, tetapi menginginkan akses ke telepon. Apa penjelasan untuk ini?

masukkan deskripsi gambar di sini

Nam G VU
sumber
Tidak juga, untuk "yeah yeah, aplikasi ini memiliki izin untuk mengirim sms dan menelepon nomor premium di belakang Anda" yang merupakan asumsi orang . @ Jawaban Christian di bawah ini telah memukul paku di kepala! Ini sah dalam banyak kasus, dan cukup sering, dev cenderung lupa tentang mengurangi izin (mungkin penahanan dari awal pengembangan aplikasi).
t0mm13b
1
@ t0mm13b Saya tidak berpikir ada banyak permintaan untuk mengurangi izin di luar teknisi dan geek privasi (termasuk diri sendiri). Jadi jika pembuat aplikasi hanya membuat norma untuk meminta paket lengkap izin, maka konsumen akan menganggap banyak izin baik untuk aplikasi apa pun. Pemerintah tidak menekan mereka untuk menggunakan izin minimum, dan sejauh ini pasar tidak menekan mereka. Yaitu ada sedikit biaya untuk aplikasi yang membutuhkan banyak izin.
user29020

Jawaban:

59

Ini memungkinkan Aplikasi untuk membaca ID unik (pengidentifikasi telepon bernama IMEI ) yang terkait dengan ponsel Anda.

Karena itu dapat membantu dengan perlindungan salinan atau upaya untuk melacak jumlah pengguna.

rampok
sumber
3
Lihat pertanyaan SO ini tentang mendapatkan ID unik dari ponsel, sepertinya cara (saat ini) paling dapat diandalkan bagi pengembang untuk mendapatkan ID unik dari telepon memerlukan izin Read Phone State stackoverflow.com/questions/2785485/…
GAThrawn
40

Ada alasan lain untuk ini selain ID unik. Saya kira setengah dari aplikasi tidak mengakses nilai-nilai itu sama sekali. Masalahnya adalah bahwa untuk versi yang lebih rendah hingga Android 1.5 izin ini tidak ada. Semua orang dapat mengakses nilai-nilai ini tanpa meminta sesuatu.

Karenanya jika Anda membuat aplikasi yang kompatibel dengan 1.5 izin ini akan secara otomatis ditambahkan untuk meniru keamanan Android 1.5 yang lebih rendah karena itu Anda dapat mengabaikan izin ini di sebagian besar waktu karena cenderung hanya masalah kompatibilitas.

ce4
sumber
2
Hal yang sama terjadi dengan akses kartu SD.
Denis Nikolaenko
1
Itu benar - tetapi tidak menjelaskan mengapa aplikasi untuk 2.x ke atas sangat menginginkannya.
Izzy
19

Alasannya adalah bahwa Android 1.5 dan sebelumnya tidak memerlukan aplikasi untuk secara khusus meminta izin tersebut dan secara otomatis memberikannya. Sejak Android 1.6, izin tersebut harus secara khusus diminta oleh aplikasi. Namun, jika Anda menentukan bahwa aplikasi Anda dapat berjalan di perangkat dengan Android 1.5 dan lebih sedikit, maka izin itu ditambahkan ke aplikasi secara default dan pasar menunjukkan izin itu seperti yang diminta oleh aplikasi.

Jadi, secara ringkas, aplikasi mungkin tidak benar-benar mengakses "status dan identitas ponsel" Anda, tetapi jika pengembang menentukan bahwa aplikasinya dapat berjalan pada perangkat dengan 1,5 atau kurang maka izin tersebut akan ditampilkan.


sumber
Apakah Anda punya tautan ke dokumentasi yang menunjukkan ini?
Diambil pada
developer.android.com/reference/android/os/… memberikan daftar lengkap pengidentifikasi versi target dan perubahan izin (di antara perbedaan lainnya) di antara mereka.
Stewart
Baik. Tapi mungkin tidak lagi "menarik", karena aplikasi untuk 1.5 ke bawah menjadi sangat jarang :)
Izzy
18

Pertanyaan ini cukup mengganggu saya. Jadi sekarang, akhirnya, saya memutuskan untuk menyelesaikan masalah ini.

Playstore memiliki aplikasi bernama izin.READ_PHONE_STATE , yang meminta READ_PHONE_STATEsebagai satu-satunya izin, dan tidak melakukan apa pun selain mencetak semua data yang dapat diakses dengan atau tanpa menggunakannya. Saya telah menginstalnya di LG Optimus 4X saya , sedang di-root pada Android 4.0, dan mencabut izin menggunakan LBE. Hasil yang cukup menarik, seperti yang ditunjukkan tangkapan layar berikut:

Tangkapan layar 1 Tangkapan layar 2 Tangkapan layar 3
Informasi yang dikumpulkan oleh izin aplikasi.READ_PHONE_STATE (klik gambar untuk varian yang lebih besar)

Seperti yang Anda dapat dengan mudah melihat, bahkan beberapa informasi dev meskipun tidak dapat diakses tanpa izin, dapat diakses secara bebas: nomor kotak surat saya (komentar: Ya, itu yang benar; dengan penyedia saya itulah jalan pintas ketika melakukan panggilan dari perangkat Anda sendiri, sehingga saya dapat bebas menampilkannya;) Pada akhir tangkapan layar pertama Anda melihat:

  • CALL_STATE_IDLE. Jadi tidak ada panggilan telepon masuk, keluar, atau sedang berlangsung. Tidak ada aplikasi yang memerlukan izin ini untuk "melatarbelakangi" dirinya pada panggilan masuk.

Bahkan mungkin untuk melihat apakah data seluler aktif ( DATA_DISCONNECTED; Saya menggunakan WiFi saat mengambil tangkapan layar, seperti yang dapat Anda lihat di bilah pemberitahuan), di negara mana Anda berada, penyedia Anda (termasuk beberapa data teknis tentangnya), apakah Anda memiliki kartu SIM, atau jika sedang roaming.

Satu-satunya hal yang tidak dapat diakses adalah mengidentifikasi data: IMEI, SIMID, IMSI, dan nomor telepon Anda sendiri.

Kesimpulan: Izin ini hanya diperlukan untuk tujuan identifikasi, tidak ada yang lain.

Mengapa begitu banyak aplikasi membutuhkannya?

  • Untuk modul iklan, kemungkinan besar 1
  • Karena dev berpikir dia membutuhkannya (seperti yang ditunjukkan oleh beberapa jawaban di sini) 2
  • Karena aplikasi tersebut dirancang untuk (juga) berjalan di Android 1.5 dan di bawahnya (mudah ditemukan, seperti yang tercantum di Google Play ).

Kemungkinan persis urutan ini, IMHO.


1 Catatan oleh pos Dan di obrolan :

Kebijakan Google Play sekarang melarang aplikasi dari mendapatkan IMEI Anda untuk mengidentifikasi Anda untuk tujuan periklanan. Semua perpustakaan iklan telah diperbarui sekarang untuk menggunakan "ID iklan" yang disediakan Google-Play-Services, sehingga semua yang masih menggunakan IMEI untuk tujuan ini harus dilaporkan ke Google.

Karena sulit bagi pengguna untuk mengetahui untuk apa aplikasi menggunakan IMEI, Anda harus meminta pengembang untuk menjelaskan terlebih dahulu.


2 Pengembang lain baru saja menunjukkan kepada saya perbedaan yang tipis: sementara izin tidak diperlukan untuk membaca status panggilan saat ini (seperti yang telah saya tunjukkan), mungkin perlu mendaftarkan pendengar agar diberi tahu tentang perubahan panggilan status (lihat: Mendeteksi panggilan telepon masuk dan keluar di Android ). Meskipun tampaknya ada cara untuk menangani hal ini secara otomatis ketika sistem memanggil onPause, itu mungkin tidak selalu cocok: pikirkan jam alarm Anda. Anda mungkin tidak ingin hal itu secara otomatis dihentikan pada panggilan masuk - terutama tidak ketika profil Anda diatur ke volume dering "dibisukan".


3 Sekali lagi koreksi dari Dan : Anda hanya mendapatkan izin ekstra default jika versi "target" aplikasi Anda adalah 1,5. Jika Anda menargetkan versi yang lebih baru tetapi versi min Anda 1,5, Anda tidak mendapatkan izin ditambahkan secara otomatis.


Pembaruan

  1. Menarik bahwa ada masalah terbuka (21504) untuk membagi READ_PHONE_STATEapa yang diperlukan untuk a) mendeteksi panggilan masuk dan yang terkait (telepon), dan izin kedua untuk rincian identifikasi (IMEI, IMSI, dll). Dibuka 11/2011, masih belum bekerja. Bintangi jika tertarik :)
  2. Dan ya, ada cara untuk mencapai (panggilan masuk mendeteksi) yang sama tanpa yang READ_PHONE_STATEizin, seperti misalnya ditunjukkan oleh Arno Welzel . Sebagai panggilan telepon masuk akan memicu dering, yang acara dapat digunakan dengan onAudioFocusChange(), yang tidak memerlukan izin khusus: jika dipicu oleh itu, aplikasi bisa memeriksa CallState (sekali lagi, tanpa izin khusus diperlukan) untuk melihat apakah ada sebuah panggilan masuk.
Izzy
sumber
Saya pikir Anda perlu menghapus bagian di mana Anda mengatakan tidak ada aplikasi yang membutuhkan izin ini untuk latar belakang pada panggilan masuk. Anda sudah membuat poin ini dalam catatan kaki 2, tetapi ini kontradiktif. Lihat juga developer.android.com/reference/android/telephony/…
Mikel
@Mikel Anda sebagian benar. Menggunakan izin ini adalah cara "termudah" untuk menyelesaikan tugas, tetapi itu bukan satu-satunya. Itu dapat dilakukan tanpa, seperti yang ditunjukkan oleh beberapa pengembang (apakah sedang mengobrol? Sayangnya, saya kehilangan tautan). Seperti banyak hal, menggunakan API Google membuat beberapa hal lebih mudah untuk dicapai (sementara itu juga mengikat aplikasi Anda ke sistem eco Google). Saya bukan pengembang, jadi saya tidak tahu berapa banyak pekerjaan yang akan terjadi dengan cara lain.
Izzy
Saya juga belum Android dev, dan saya setuju sepertinya beberapa use case dicakup oleh onPause (). Hanya mengatakan bahwa "Tidak ada aplikasi yang membutuhkan izin ini" terdengar salah bagi saya. Kedengarannya lebih seperti "beberapa aplikasi mungkin memerlukan izin ini", misalnya jika berjalan di latar belakang. Juga perhatikan bahwa menerima maksud siaran tentunya harus lebih efisien daripada polling berulang kali pada kondisi ponsel.
Mikel
@Mikel Lihat pembaruan saya. Dan ya, "tidak perlu sama sekali" mungkin agak berlebihan. Mungkin dalam 0,5% dari semua permintaan saat ini, mungkin memang diperlukan, tanpa alternatif yang tersedia #D Dan ya lagi: onPause()adalah apa yang kita bahas dalam obrolan untuk itu! Tetapi menggunakan bahkan onAudioFocusChange()mungkin lebih sedikit overhead (polling kecil kemudian mungkin diabaikan).
Izzy
10

Banyak penerbit iklan menggunakan izin ini untuk mendapatkan ID Telepon untuk semua jenis tujuan pelacakan. Ada cara lain untuk mendapatkan ID unik, tetapi sayangnya mereka buggy di versi Android yang lebih lama (ceritanya lebih rumit, lihat misalnya https://stackoverflow.com/questions/2785485/is-there-a-unun-android- device-id atau http://android-developers.blogspot.com/2011/03/identifying-app-installations.html untuk cerita yang lebih lengkap).

Jadi jika aplikasi menggunakan iklan, ada kemungkinan wajar bahwa aplikasi itu sendiri sebenarnya tidak memerlukan izin READ_PHONE_STATE, hanya penyedia iklan yang melakukannya.

Kasper Peeters
sumber
1
Itu IMHO masalah utama di balik itu semua! Berpikir dengan baik.
Izzy