آشنایی با مجوزهای اپلیکیشن های اندروید - بخش اول
اپلیکیشن های اندروید مجوزهای متعددی برای دسترسی به اس دی کارت، استفاده از اینترنت و غیره، مورد استفاده قرار می دهند و گوگل نیز پیش از نصب اپلیکیشن تمامی مجوزهای موردنیاز آن را نمایش می دهد، اما جزئیات این مجوزها نشان داده نمی شوند.
چرا اندروید از مجوزها استفاده می کند و نحوه پیاده سازی این مجوزها چگونه است؟
در دنیای اندروید، اپلیکیشن پیش از دسترسی به برخی امکانات خاص، باید مجوز استفاده از آنها را داشته باشد، در نتیجه اپلیکیشن بدون اطلاع کاربر، قادر به انجام هر کاری که می خواهد نیست. هنگام نصب اپلیکیشن از گوگل پلی استور، یک دیالوگ باکس نمایش داده می شود و کاربر باید عملیاتی را که اپلیکیشن پس از نصب به انجام می رساند، تایید کند. فریم ورک Android API مسئول رسیدگی به این مجوزها می باشد که مکانیزم اعتبارسنجی این مجوزها را فراخوانی می کند و چک می کند که آیا اپلیکیشن مجوز انجام آن کار منحصر به فرد را دارد یا خیر. برخی از اپلیکیشن ها مانند BLUETOOTH توسط کرنل لینوکس مدیریت می شوند، لذا تمامی فراخوانی های API به طور خودکار اتفاق می افتد و توسعه دهنده نیازی به کسب اطمینان از بابت مدیریت این مجوزها ندارد.
اندروید چه مجوزهایی دارد؟
گوگل 17 نوع مجوز متفاوت ارائه داده و توسعه دهندگان می توانند آنها را در اپلیکیشن های خود مورد استفاده قرار دهند، جزئیات هریک از این مجوزها در زیر فهرست شده است.
In-app Pruchases – در برخی از اپلیکیشن های قادر به خرید محتوا درون خود اپلیکیشن هستید، برای نمونه می توان به کارنسی بازی ها اشاره کرد. برای عملکرد صحیح این ویژگی لازم است مجوز آن را به فایل منیفست اضافه کنید.
<uses-permission android:name="com.android.vending.BILLING" />
Device and app history – ممکن است اپلیکیشن قادر به خواندن برخی از اطلاعات لاگ حساس، بوکمارک ها و تاریخچه وب، بازیابی اپلیکیشن ها و وضعیت داخلی سیستم باشد. آخرین مورد به سبب android.permission.DUMP اتفاق می افتد که به اپلیکیشن اجازه می دهند تا اطلاعات dump را از سرویس های سیستم بازیابی کند. این مورد منجر به افشای اطلاعاتی بسیار حساس درباره گوشی که اپلیکیشن را مورد استفاده قرار می دهد می شود، تمامی این مجوزها با گوشی و تاریخچه اپلیکیشن سر و کار دارند.
<uses-permission android:name="android.permission.READ_LOGS"/>
<uses-permission android:name="android.permission.DUMP"/>
<uses-permission android:name="android.permission.READ_HISTORY_BOOKMARKS"/>
<uses-permission android:name="android.permission.GET_TASKS"/>
Cellular data settings – اپلیکیشن می تواند اطلاعات مربوط به شبکه گوشی را کنترل کرده و در داده های دریافتی تداخل به وجود آورد، در زیر چند نمونه از مجوزهای موردنیاز فهرست شده اند.
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Identity – با کمک این مجوز اپلیکیشن قادر به یافتن اکانت های موجود در گوشی، دیدن و تغییر کانتکت کارت صاحب گوشی و افزودن یا حذف مخاطبین گوشی می باشد. مجوز CONTACTS با مخاطبین کاربر سر و کار دارد، در حالی که ACCOUNT_MANAGER به اکانت های کاربر مربوط است.
<uses-permission android:name="android.permission-group.CONTACTS"/>
<uses-permission android:name="android.permission.ACCOUNT_MANAGER"/>
Contacts – این مجوز مشابه مجوز اخیر است، با این تفاوت که این مجوز تنها به مخاطبین ذخیره شده در گوشی دسترسی دارد و می تواند آنها را خوانده و یا تغییر دهد، گوگل تمامی این مجوزها را در یک گروه قرار داده است.
<uses-permission android:name="android.permission-group.CONTACTS"/>
Calendar – این مجوز اپلیکیشن را قادر به دسترسی به تقویم و رویدادهای کاربر می کند، حتی اگر شامل اطلاعات محرمانه ای باشند. اپلیکیشن با این مجوز قادر به ساخت رویدادها و ارسال ایمیل به میهمانان بدون اطلاع کاربر می باشد که می تواند در برخی از شرایط خطرناک باشد.
<uses-permission android:name="android.permission-group.CALENDAR"/>
Location – اپلیکیشن با استفاده تنظیمات تقریبی یا دقیق قادر به استفاده از اطلاعات موقعیت گوشی می باشد. در صورت استفاده از گزینه تقریبی، اپلیکیشن اطلاعات موقعیت گوشی را از شبکه دریافت می کند، درحالیکه در گزینه دقیق اپلیکیشن از سیستم جی پی اس گوشی و شبکه برای تشخیص موقعیت گوشی بهره می گیرد. برای این کار مجوز به اپلیکیشن اجازه می دهد تا به کامندهای اضافه ارائه دهنده موقعیت و جی پی اس دسترسی پیدا کند.
<uses-permission android:name="android.permission-group.LOCATION"/>
SMS – اپلیکیشن می تواند از سرویس های اس ام اس و ام ام اس گوشی استفاده کند، بدین ترتیب قادر به دریافت SMS و WAP و خواندن SMS و MMS، ویرایش SMS و MMS و ارسال SMS و MMS می گردد که هزینه نیز به دنبال خواهد داشت.
<uses-permission android:name="android.permission-group.SMS"/>
Phone – اپلیکیشن به شماره های تماس دسترسی مستقیم دارد و می تواند لاگ تماس ها را خوانده و یا اطلاعاتی را در آنجا ثبت کند، تماس های خروجی را reroute نماید، وضعیت گوشی را تغییر دهد و بدون اطلاع کاربر تماس برقرار کند. مشابه مجوز SMS، این بخش نیز هزینه بر خواهد بود. این مجوز به تمامی چیزهایی که با امکانات تلفنی گوشی مرتبط است، سر و کار دارد.
<uses-permission android:name="android.permission-group.PHONE"/>
Photos/Media/Files – اپلیکیشن قادر به استفاده از فایل های موجود در گوشی که همراه اپلیکیشن نصب شده می باشد. این قابلیت شامل خواندن و نوشتن در اس دی کارت و حافظه یو اس بی و نیز فرمت حافظه خارجی می باشد. این مجوز با خواندن فضای ذخیره سازی خارجی در گوشی های جدیدتر سر و کار دارد.
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission-group.STORAGE"/>
Camera – اپلیکیشن می تواند عکس گرفته یا ویدیو ضبط کند و این کار با آگاهی و یا حتی بدون اجازه کاربر صورت می پذیرد.
<uses-permission android:name="android.permission-group.CAMERA"/>
Microphone – اپلیکیشن قادر به استفاده از میکروفون گوشی است و می تواند از آن برای ضبط صوت استفاده کرده و این کار نیز با اجازه یا بدون اجازه کاربر صورت دهد.
<uses-permission android:name="android.permission-group.MICROPHONE"/>
WiFi connection information – اپلیکیشن می تواند به اطلاعات ارتباط وای فای گوشی مانند روشن یا خاموش بودن آن و یا گوشی های متصل، دسترسی داشته باشد.
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
Bluetooth connection information – اپلیکیشن قادر به کنترل بلوتوث و ارسال و دریافت داده از گوشی های مجاور می باشد.
<uses-permission android:name="android.permission.BLUETOOTH"/>
Wearable sensors/activity data – گوشی قادر به دسترسی به اطلاعات از یک دستگاه پوشیدنی مانند دریافت ضربان قلب از یک پوشیندی اندروید است.
<uses-permission android:name="android.permission.BODY_SENSORS"/>
Device ID & call information – اپلیکیشن می تواند به آی دی گوشی، شماره، در حال تماس بودن گوشی و شماره ای که پشت خط است، دسترسی پیدا کند.
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Other – چنانچه مجوز یک اپلیکیشن خارج از این فهرست باشد، می توان یک مجوز other ساخت، این مجوز می تواند شامل استفاده از استریم های رسانه های اجتماعی و موارد مشابه باشد. چنانچه این بخش به عنوان یک مجوز درج شده باشد، کاربران باید هر آپدیت از اپلیکیشن را تایید کنند.
در مقاله بعدی نحوه پیاده سازی این مجوزها در اپلیکیشن شرح داده می شود، با ما همراه باشید.