Vraag:
Waarom hebben zoveel applicaties toestemming nodig om de telefoonstatus en identiteit te lezen?
goldsz
2010-07-18 06:52:18 UTC
view on stackexchange narkive permalink

Waarom hebben zoveel applicaties toestemming nodig om de telefoonstatus en identiteit te lezen ?. Specifiek:

  Telefoongesprekken lezen telefoonstatus en identiteit  

Quickpedia is bijvoorbeeld een Wikipedia-portaal, maar wil toegang tot de telefoon. Wat is de verklaring hiervoor?

enter image description here

Dat is het niet echt, want "ja ja, deze app heeft deze toestemming om sms'jes te verzenden en achter je rug een premiumnummer te bellen", wat mensen ** aannemen **. @Christian's antwoord hieronder heeft de spijker op zijn kop geslagen! Het is in veel gevallen legitiem, en vaak hebben ontwikkelaars de neiging om de toestemmingen te vergeten (misschien een overblijfsel uit de vroege dagen van de ontwikkeling van een app).
@t0mm13b Ik denk niet dat er veel vraag is naar verminderde machtigingen buiten techneuten en privacy-geeks (inclusief zelf). Dus als app-makers er gewoon de * norm * van maken om de volledige reeks machtigingen te vereisen, gaan consumenten ervan uit dat veel machtigingen prima zijn voor elke app. De overheid zet hen niet onder druk om minimale toestemmingen te gebruiken, en tot dusver oefent de markt geen druk op hen uit. D.w.z. er zijn weinig tot geen kosten voor apps die veel machtigingen nodig hebben.
Vijf antwoorden:
#1
+59
Christian
2010-07-18 18:10:20 UTC
view on stackexchange narkive permalink

Hiermee kan de app een unieke ID lezen (een telefoon-ID genaamd IMEI) die aan uw telefoon is gekoppeld.

Het kan daarom helpen met kopieerbeveiliging of het traceren van het aantal gebruikers.

Zie deze SO-vraag over het verkrijgen van een unieke ID van een telefoon, het lijkt erop dat de (momenteel) meest betrouwbare manier voor een ontwikkelaar om een ​​unieke ID van een telefoon te krijgen, de toestemming Telefoonstatus lezen vereist http://stackoverflow.com/questions/2785485 / is-er-een-uniek-android-apparaat-id / 2853253 # 2853253
#2
+40
Janusz
2010-08-05 15:09:40 UTC
view on stackexchange narkive permalink

Er is nog een andere reden dan de unieke ID. Ik vermoed dat de helft van de apps helemaal geen toegang heeft tot die waarden. Het probleem is dat voor een lagere versie tot Android 1.5 deze toestemming niet bestaat. Iedereen kon toegang krijgen tot deze waarden zonder iets te vragen.

Daarom, als u een app maakt die compatibel is met 1.5, wordt deze toestemming automatisch toegevoegd om de lagere beveiliging van Android 1.5 na te bootsen.Daarom zou u deze toestemming in de meeste gevallen kunnen negeren omdat dit meestal het geval is. gewoon een compatibiliteitsprobleem.

Hetzelfde gebeurt met toegang tot de SD-kaart.
Dat is waar - maar verklaart niet waarom apps voor 2.x en hoger het zo vaak willen.
#3
+19
Adil
2010-12-05 13:37:51 UTC
view on stackexchange narkive permalink

De reden is dat Android 1.5 en eerder niet vereisten dat de applicatie specifiek om die toestemmingen vroeg en ze automatisch verleende. Sinds Android 1.6 moeten die toestemmingen specifiek worden aangevraagd door de app. Als u echter specificeert dat uw applicatie kan draaien op apparaten met Android 1.5 en lager, dan wordt die toestemming standaard aan de applicatie toegevoegd en laat de markt zien dat toestemming wordt gevraagd door de applicatie.

Dus in Samenvattend kan het zijn dat de applicatie geen toegang heeft tot uw "telefoonstatus en identiteit", maar als de ontwikkelaar heeft gespecificeerd dat zijn / haar applicatie kan worden uitgevoerd op apparaten met 1.5 of minder, wordt die toestemming getoond.

Heeft u een link naar documentatie die dit aantoont?
@GAThrawn: zie http://groups.google.com/group/android-developers/browse_thread/thread/6d2fe71f4690ae22/e8ebe400cbb73feb en http://code.google.com/p/android/issues/detail?id=4101
http://developer.android.com/reference/android/os/Build.VERSION_CODES.html geeft een volledige lijst van doelversie-ID's en de wijzigingen in rechten (naast andere verschillen) tussen hen.
Rechtsaf. Maar waarschijnlijk niet langer "interessant", aangezien apps voor 1.5 en lager vrij zeldzaam zijn geworden :)
#4
+18
Izzy
2014-02-08 03:39:11 UTC
view on stackexchange narkive permalink

Ik heb al een hele tijd last van deze vraag. Dus nu heb ik eindelijk besloten om het probleem uit te zoeken.

De Playstore heeft een app met de naam toestemming.READ_PHONE_STATE, die om READ_PHONE_STATE vraagt. als enige toestemming, en doet niets anders dan het afdrukken van alle gegevens waartoe het toegang heeft, met of zonder deze te gebruiken. Ik heb dat geïnstalleerd op mijn LG Optimus 4X , geworteld op Android 4.0.3, en de toestemming ingetrokken met LBE. De resultaten waren behoorlijk interessant, zoals de volgende screenshots laten zien:

Screenshot 1 Screenshot 2 Screenshot 3
Informatie verzameld door de app toestemming.READ_PHONE_STATE (klik op afbeeldingen voor grotere varianten)

Zoals je gemakkelijk kunt zien , zelfs bepaalde informatie die de ontwikkelaar, hoewel niet toegankelijk zonder de toestemming, vrij toegankelijk was: mijn mailboxnummer (opmerking: Ja, het is de juiste; bij mijn provider is dat de snelkoppeling bij het kiezen vanaf je eigen apparaat, dus ik kan het vrij weergeven;) Aan het einde van de eerste schermafbeelding zie je:

  • CALL_STATE_IDLE . Dus geen telefoongesprek inkomend, uitgaand of bezig. Geen enkele app heeft deze toestemming nodig om zichzelf op de achtergrond te zetten bij inkomende oproepen.

Het is zelfs mogelijk om te zien of mobiele gegevens actief zijn ( DATA_DISCONNECTED ; ik was op wifi toen het maken van de screenshots, zoals je kunt zien in de notificatiebalk), in welk land je bent, je provider (inclusief wat technische gegevens over hem), of je een simkaart hebt of dat je aan het roamen bent. / p>

De enige dingen die niet dus toegankelijk zijn, zijn identificatiegegevens: IMEI, SIMID, IMSI en uw eigen telefoonnummer.

Conclusie: deze toestemming is alleen nodig voor identificatiedoeleinden, niets anders.

Waarom hebben zoveel apps het dan nodig?

  • Voor de advertentiemodules, hoogstwaarschijnlijk 1
  • Omdat de ontwikkelaar dacht dat hij het nodig heeft (zoals aangegeven door enkele antwoorden hier) 2
  • Omdat de betreffende app is ontworpen om ( ook) draaien op Android 1.5 en lager (gemakkelijk te achterhalen, want dat staat vermeld op Google Play ).

Waarschijnlijkheden in precies deze volgorde, IMHO.


1 Opmerking door Dan's post in de chat:

Google Play-beleid verbiedt nu dat apps uw IMEI om u te identificeren voor reclamedoeleinden. Alle advertentiebibliotheken zijn nu bijgewerkt om de door Google-Play-Services geleverde "advertentie-ID" te gebruiken, dus iedereen die nog steeds de IMEI voor dit doel gebruikt, moet aan Google worden gemeld.

Omdat het moeilijk is voor de gebruiker om te zeggen waarvoor de app de IMEI gebruikt, moet je de ontwikkelaar eerst om uitleg vragen.


2 Een andere ontwikkelaar heeft me zojuist gewezen tot een subtiel verschil: hoewel de toestemming niet nodig is om de huidige oproepstatus te lezen (zoals ik heb aangegeven), kan het nodig zijn om een ​​ luisteraar te registreren om om op de hoogte te worden gesteld over wijzigingen van de gespreksstatus (zie: Inkomende en uitgaande telefoongesprekken detecteren op Android). Hoewel er manieren lijken te zijn om dit automatisch af te handelen wanneer het systeem onPause aanroept, is dat misschien niet altijd geschikt: denk aan uw wekker. Misschien wilt u dat niet automatisch gestopt bij een inkomend gesprek - vooral niet wanneer uw profiel is ingesteld op het belvolume "gedempt".


3 Nogmaals een correctie van Dan: u krijgt alleen de standaard extra toestemming als de "doel" -versie van uw app 1.5 is. Als u zich richt op een latere versie maar uw minimale versie 1.5 is, krijgt u de toestemming niet automatisch toegevoegd.


Updates

  1. Interessant dat er een open probleem (21504) is om READ_PHONE_STATE te verdelen in wat nodig is om a) inkomende oproepen en gerelateerde (telefonie) te detecteren, en een tweede toestemming voor de identificatiegegevens (IMEI, IMSI, enz.). Geopend 11/2011, nog steeds niet aan gewerkt. Geef het een ster als u geïnteresseerd bent :)
  2. En ja, er is een manier om hetzelfde te bereiken (inkomende oproepen detecteren) zonder de READ_PHONE_STATE toestemming, zoals bijv. aangegeven door Arno Welzel. Aangezien een inkomend telefoongesprek het belsignaal zou activeren, zou die gebeurtenis kunnen worden gebruikt met onAudioFocusChange () , waarvoor geen speciale toestemming vereist is: indien daardoor geactiveerd, kan de app controleer de CallState (nogmaals, zonder speciale toestemming vereist) om te zien of er een inkomend gesprek is.
Ik denk dat je het gedeelte moet verwijderen waarvan je zegt dat geen enkele app deze toestemming nodig heeft voor achtergrondinformatie bij inkomende oproepen. U maakt dit punt al in voetnoot 2, maar het is tegenstrijdig. Zie ook http://developer.android.com/reference/android/telephony/TelephonyManager.html#ACTION_PHONE_STATE_CHANGED
@Mikel Je hebt gedeeltelijk gelijk. Het gebruik van deze toestemming is de "gemakkelijkste" manier om de taak uit te voeren, maar het is niet de enige. Het kan zonder, zoals een ontwikkelaar opmerkte (was het in de chat? Helaas ben ik de link kwijtgeraakt). Zoals met veel dingen, maakt het gebruik van de API's van Google sommige dingen veel gemakkelijker om te bereiken (terwijl het uw app ook aan het Google-ecosysteem bindt). Ik ben geen ontwikkelaar, dus ik kan niet zeggen hoeveel meer werk de andere kant op zou betekenen.
Ik ben ook nog geen Android-ontwikkelaar en ik ben het ermee eens dat het klinkt alsof sommige use-cases worden gedekt door onPause (). Gewoon zeggen dat "Geen enkele app heeft deze toestemming nodig" klinkt verkeerd voor mij. Het klinkt meer als "sommige apps hebben deze toestemming nodig", bijv. als ze op de achtergrond draaien. Merk ook op dat het ontvangen van de uitzendintentie zeker efficiënter moet zijn dan het herhaaldelijk pollen van de telefoonstatus.
@Mikel Zie mijn update. En ja, "helemaal niet nodig" is misschien een beetje overdreven. Misschien is het in 0,5% van alle huidige verzoeken inderdaad nodig, zonder alternatief beschikbaar #D En ja nogmaals: `onPause ()` was wat we daarvoor in de chat bespraken! Maar het gebruik van `onAudioFocusChange ()` is misschien zelfs minder overhead (de kleine peiling is dan misschien te negeren).
#5
+10
Kasper Peeters
2011-12-23 02:37:10 UTC
view on stackexchange narkive permalink

Veel advertentie-uitgevers gebruiken deze toestemming om de telefoon-ID op te halen voor allerlei soorten trackingdoeleinden. Er zijn andere manieren om een ​​unieke ID te krijgen, maar helaas bevatten ze fouten in oudere Android-versies (het verhaal is ingewikkelder, zie bijv. https://stackoverflow.com/questions/2785485/is-there-a-unique -android-device-id of http://android-developers.blogspot.com/2011/03/identifying-app-installations.html voor een vollediger verhaal).

Dus als de app advertenties gebruikt, is de kans groot dat de app zelf niet echt de READ_PHONE_STATE-toestemming nodig heeft, alleen de advertentieprovider.

*** Dat is *** IMHO het belangrijkste probleem erachter! Goed doordacht.


Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 2.0-licentie waaronder het wordt gedistribueerd.
Loading...