שְׁאֵלָה:
מדוע כל כך הרבה יישומים דורשים הרשאה לקרוא את מצב הטלפון וזהותו?
goldsz
2010-07-18 06:52:18 UTC
view on stackexchange narkive permalink

מדוע כל כך הרבה יישומים דורשים הרשאה לקרוא את מצב הטלפון ואת הזהות ?. באופן ספציפי:

  שיחות טלפון קוראות מצב טלפון וזהות  

למשל Quickpedia הוא פורטל בויקיפדיה, אך מעוניין בגישה לטלפון. מהו ההסבר לכך?

enter image description here

זה לא ממש, שכן "כן כן, לאפליקציה הזו יש את ההרשאה הזו לשלוח SMS ולצלצל מספר פרימיום מאחורי הגב" וזה מה שאנשים ** מניחים **. תשובת @Christian's למטה פגעה במסמר בראש! זה לגיטימי בהרבה מקרים, ולעתים קרובות למדי devs נוטים לשכוח מלהקטין את ההרשאות (אולי עצירה מהימים הראשונים לפיתוח אפליקציה).
@t0mm13b אני לא חושב שיש הרבה דרישות להרשאות מופחתות מחוץ לטכנאים ולגיקים בפרטיות (כולל עצמי). אז אם יצרני אפליקציות פשוט הופכים את זה ל * הנורמה * לדרוש את מערך ההרשאות המלא, אזי הצרכנים מניחים שהרבה הרשאות מתאימות לכל יישום. הממשלה לא לוחצת עליהם להשתמש בהרשאות מינימליות, ועד כה השוק לא לוחץ עליהן. כְּלוֹמַר. יש עלויות מועטות עד אפליקציות שדורשות הרשאות רבות.
חָמֵשׁ תשובות:
#1
+59
Christian
2010-07-18 18:10:20 UTC
view on stackexchange narkive permalink

הוא מאפשר לאפליקציה לקרוא מזהה ייחודי (מזהה טלפון בשם IMEI) המשויך לטלפון שלך.

לכן זה יכול לעזור בהגנה מפני העתקות או בניסיון לעקוב אחר מספר המשתמשים.

עיין בשאלה זו בנושא קבלת מזהה ייחודי של טלפון, נראה כמו הדרך (האמינה ביותר) כיום עבור מפתח לקבל מזהה ייחודי מטלפון מחייבת הרשאת קריאת מצב טלפון http://stackoverflow.com/questions/2785485 / is-there-a-unique-android-device-id / 2853253 # 2853253
#2
+40
Janusz
2010-08-05 15:09:40 UTC
view on stackexchange narkive permalink

יש לכך סיבה נוספת מאשר המזהה הייחודי. הייתי מנחש שמחצית מהאפליקציות כלל לא ניגשות לערכים אלה. הבעיה היא שעבור גרסה נמוכה יותר עד אנדרואיד 1.5 הרשאה זו אינה קיימת. כולם יכלו לגשת לערכים אלה מבלי לבקש דבר.

לכן אם אתה יוצר אפליקציה שתואמת 1.5 הרשאה זו תתווסף באופן אוטומטי כדי לחקות את האבטחה הנמוכה יותר של Android 1.5 בגלל זה אתה יכול להתעלם מההרשאה הזו ברוב הפעמים מכיוון שהיא נוטה להיות רק נושא תאימות.

אותו דבר קורה עם גישה לכרטיס SD.
זה נכון - אך לא מסביר מדוע אפליקציות עבור 2.x ומעלה רוצות בכך לעתים קרובות כל כך.
#3
+19
Adil
2010-12-05 13:37:51 UTC
view on stackexchange narkive permalink

הסיבה היא שאנדרואיד 1.5 ומעלה לא דרשו מהיישום לבקש הרשאות אלה באופן ספציפי והעניקה אותן אוטומטית. מאז אנדרואיד 1.6, על האפליקציה לבקש הרשאות אלה באופן ספציפי. עם זאת, אם אתה מציין שהיישום שלך יכול לפעול במכשירים עם אנדרואיד 1.5 ופחות, הרשאה זו מתווספת ליישום כברירת מחדל והשוק מראה את ההרשאה כבקשת היישום.

אז ב סיכום, ייתכן שהיישום לא ממש ניגש ל"מצב הטלפון והזהות "שלך, אך אם המפתח ציין שהיישום שלו יכול להריץ במכשירים עם 1.5 ומטה אז ההרשאה תוצג.

האם יש לך קישור לתיעוד כלשהו שמראה זאת?
@GAThrawn: ראה http://groups.google.com/group/android-developers/browse_thread/thread/6d2fe71f4690ae22/e8ebe400cbb73feb ו- http://code.google.com/p/android/issues/detail?id=4101
http://developer.android.com/reference/android/os/Build.VERSION_CODES.html נותנת רשימה מלאה של מזהי גרסאות יעד ושינויים בהרשאות (בין היתר).
ימין. אבל כנראה כבר לא "מעניין", מכיוון שאפליקציות עבור 1.5 ומטה נעשו די נדירות :)
#4
+18
Izzy
2014-02-08 03:39:11 UTC
view on stackexchange narkive permalink

שאלה זו מטרידה אותי די הרבה זמן. אז עכשיו, סוף סוף, החלטתי לרדת לתחתית הנושא.

לפלייסטור יש אפליקציה בשם הרשאה. READ_PHONE_STATE, שמבקשת READ_PHONE_STATE כהיתר היחיד, ואינו עושה דבר אחר מלבד להדפיס את כל הנתונים שהוא יכול לגשת אליהם בלי או בלי להשתמש בהם. התקנתי את זה ב LG Optimus 4X שלי, כשהוא מושרש במלאי אנדרואיד 4.0.3, וביטלתי את ההרשאה באמצעות LBE. תוצאות די מעניינות, כפי שמראים צילומי המסך הבאים:

Screenshot 1 Screenshot 2 Screenshot 3
מידע שנאסף על ידי האפליקציה הרשאה. READ_PHONE_STATE (לחץ על תמונות לגרסאות גדולות יותר) sup>

כפי שאתה יכול לראות בקלות , אפילו מידע כלשהו שההתווך אמנם לא נגיש ללא האישור, היה נגיש באופן חופשי: מספר תיבת הדואר שלי (הערה: כן, זה הנכון; אצל הספק שלי זה קיצור הדרך בחיוג מהמכשיר שלך, כך שאוכל להציג אותו בחופשיות;) בסוף צילום המסך הראשון אתה רואה:

  • CALL_STATE_IDLE . אז אין שיחת טלפון נכנסת, יוצאת או בעיצומה. אף אפליקציה לא זקוקה להרשאה זו כדי "לרקע" את עצמה בשיחות נכנסות.

ניתן אפילו לראות אם נתונים ניידים פעילים ( DATA_DISCONNECTED ; הייתי ב- WiFi כאשר צילום צילומי המסך, כפי שניתן לראות בסרגל ההודעות), באיזו מדינה אתה נמצא, הספק שלך (כולל כמה נתונים טכניים עליו), בין אם יש לך כרטיס SIM או אם אתה נודד. / p>

הדברים היחידים ש לא נגישים מכאן הם נתונים מזהים: IMEI, SIMID, IMSI ומספר טלפון משלך.

מסקנה: הרשאה זו נחוצה רק למטרות זיהוי, שום דבר אחר.

מדוע כל כך הרבה אפליקציות זקוקות לה אז?

  • עבור מודולי המודעות, ככל הנראה 1
  • מכיוון שהמחשב חשב שהוא זקוק לכך (כפי שצוין בכמה תשובות כאן) 2
  • מכיוון שהאפליקציה המדוברת נועדה ( גם) לרוץ על אנדרואיד 1.5 ומטה (קל לגלות, כיוון שרשום ב גוגל פליי ).

סיכויים בסדר זה בדיוק, IMHO.


1 הערה מאת ההודעה של דן בצ'אט:

מדיניות Google Play אוסרת כעת על אפליקציות להשיג את IMEI לזהות אותך למטרות פרסום. כל ספריות המודעות עודכנו כעת לשימוש ב"מזהה הפרסום "המסופק על ידי Google Play, ולכן יש לדווח לגוגל על ​​כל מי שעדיין משתמש ב- IMEI למטרה זו.

מכיוון שקשה למשתמש לדעת לשם מה האפליקציה משתמשת ב- IMEI, עליך לבקש מהמפתח להסביר תחילה.


2 מפתח אחר פשוט הצביע עליי. להבדל עדין: אמנם אין צורך בהרשאה כדי לקרוא את מצב השיחה הנוכחי (כפי שציינתי), ייתכן שיהיה צורך לרשום מאזין על מנת ל הודעה על שינויים על מצב השיחה (ראה: זיהוי שיחות טלפון נכנסות ויוצאות באנדרואיד). אמנם נראה שיש אמצעים לטיפול באופן אוטומטי כאשר המערכת קוראת ל- onPause , אך ייתכן שלא תמיד זה מתאים: חשוב על השעון המעורר שלך. אולי לא תרצה ש הופסק אוטומטית בשיחה נכנסת - במיוחד לא כאשר הפרופיל שלך מוגדר כ- "מושתק" של עוצמת הצלצול.


3 שוב תיקון מדן: אתה מקבל הרשאת ברירת מחדל נוספת רק אם גרסת ה"יעד "של האפליקציה שלך היא 1.5. אם אתה ממקד לגרסה מאוחרת יותר, אך הגרסה המינימלית שלך היא 1.5, אינך מקבל את ההרשאה באופן אוטומטי.


עדכונים

  1. מעניין שיש בעיה פתוחה (21504) לחלוקה READ_PHONE_STATE במה שנדרש כדי) לזהות שיחות נכנסות וקשורות (טלפוניה), והיתר שני ל פרטי זיהוי (IMEI, IMSI וכו '). נפתח 11/2011, עדיין לא עבד עליו. סמן את הכוכב אם אתה מעוניין :)
  2. וכן, יש דרך להשיג את אותה (איתור שיחות נכנסות) ללא ההרשאה READ_PHONE_STATE , כמו למשל הצביע על ידי ארנו וולזל. מכיוון ששיחת טלפון נכנסת תפעיל את הצלצול, ניתן להשתמש ב האירוע עם ב- AudioFocusChange () , שאינו דורש הרשאה מיוחדת: אם יופעל על ידי זה, היישום יכול בדוק את CallState (שוב, ללא צורך באישור מיוחד) כדי לראות אם יש שיחה נכנסת.
אני חושב שאתה צריך להסיר את החלק שבו אתה אומר שאף אפליקציה אינה זקוקה להרשאה זו על רקע שיחות נכנסות. אתה כבר מעלה את הנקודה הזו בהערת שוליים 2, אבל זה סותר. ראה גם http://developer.android.com/reference/android/telephony/TelephonyManager.html#ACTION_PHONE_STATE_CHANGED
@Mikel אתה צודק חלקית. שימוש בהרשאה זו היא הדרך "הקלה ביותר" לבצע את המשימה, אך היא לא היחידה. אפשר לעשות את זה בלי, כפי שציין איזה מפתח (האם זה היה בצ'אט? לצערי איבדתי את הקישור). כמו בהרבה דברים, השימוש בממשקי ה- API של גוגל מקל על ביצוע דברים מסוימים (בעוד שהוא גם מחייב את האפליקציה שלך למערכת הסביבה של גוגל). אני לא מפתח, ולכן אני לא יכול לדעת כמה עבודה אחרת תהיה אחרת.
גם אני עדיין לא מכשיר אנדרואיד ואני מסכים שזה נשמע כאילו מקרי שימוש מסוימים מכוסים על ידי onPause (). רק האמירה ש"אף אפליקציה לא צריכה את ההרשאה הזו "נשמעת לי שגויה. זה נשמע יותר כמו "אפליקציות מסוימות עשויות להזדקק להרשאה זו", למשל. אם הם רצים ברקע. שים לב גם שקבלת כוונת השידור ודאי צריכה להיות יעילה יותר מסקר שוב ושוב את מצב הטלפון.
@Mikel ראה את העדכון שלי. וכן, "בכלל לא צריך" יכול להיות מעט מוגזם. אולי ב -0.5% מכל הבקשות הנוכחיות, אכן יהיה צורך בכך, ללא חלופה זמינה # D וכן שוב: "onPause ()" היה זה שדנו בצ'אט לשם כך! אך השימוש ב- onAudioFocusChange () עשוי להיות פחות תקורה אפילו (הקלפיות הקטנות אז עלולות להיות בלתי נראות).
#5
+10
Kasper Peeters
2011-12-23 02:37:10 UTC
view on stackexchange narkive permalink

מפרסמי מודעות רבים משתמשים בהרשאה זו כדי לקבל את מזהה הטלפון לכל מיני מטרות מעקב. ישנן דרכים אחרות להשיג מזהה ייחודי, אך למרבה הצער הן מטומטמות בגרסאות אנדרואיד ישנות יותר (הסיפור מורכב יותר, ראה למשל 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, רק ספק המודעות צריך.

*** זה *** IMHO הנושא העיקרי מאחורי הכל! הבנתי היטב.


שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 2.0 עליו הוא מופץ.
Loading...