مجوزها در اندروید - Android Permissions

نمای کلی مجوزها - Permissions overviewهدف از این کار ، محافظت از حریم شخصی کاربر اندروید است. برنامه های اندروید برای دسترسی به داده های حساس کاربر (مانند مخاطبین و پیام ها) و همچنین برخی از ویژگی های سیستم (مانند دوربین و اینترنت) باید درخواست مجوز کنند. بسته به ویژگی ، سیستم ممکن است مجوز را به طور خودکار اعطا کند یا ممکن است کاربر را وادار کند تا درخواست را تأیید کند.نکته اصلی طراحی معماری سیستم عامل Android این است که هیچ برنامه ای ، به طور پیش فرض ، اجازه انجام عملی را ندارد که روی برنامه های دیگر ، سیستم عامل یا کاربر تأثیر منفی بگذارد. این شامل خواندن یا نوشتن داده های شخصی کاربر (مانند مخاطبین یا ایمیل) ، خواندن یا نوشتن فایل های برنامه دیگر ، انجام دسترسی به شبکه ، بیدار نگه داشتن دستگاه و غیره است.تأیید مجوزبرای اینکه یک برنامه بتواند مجوز های مورد نیازش را تایید کند، باید این مجوزها را با درج برچسب های <uses-permission> در مانیفست برنامه مشخص کند. با این کار برنامه به اطلاع استفاده کنندگان میرساند که نیاز به تایید چه مجوزهایی دارد. به عنوان مثال ، برنامه ای که نیاز به ارسال پیام کوتاه دارد ، این خط را در مانیفست دارد:<manifest xmlns:android=&quothttp://schemas.android.com/apk/res/android&quot package=&quotcom.example.snazzyapp&quot> <uses-permission android:name=&quotandroid.permission.SEND_SMS&quot/> <application ...> ... </application> </manifest>اگر برنامه شما مجوزهای عادی (normal permissions) را در مانیفست خود ذکر کند (یعنی مجوزهایی که خطرات زیادی برای حفظ حریم خصوصی کاربر یا عملکرد دستگاه ایجاد نمی کند) ، سیستم بطور خودکار آن مجوزها را به برنامه شما اعطا می کند.اگر برنامه شما مجوزهای خطرناک (dangerous permissions) را در مانیفست خود ذکر کرده است (یعنی مجوزهایی که به طور بالقوه می تواند بر حریم شخصی کاربر یا عملکرد عادی دستگاه تأثیر بگذارد) مانند مجوز SEND_SMS در بالا ، کاربر باید صریحاً موافقت خود را با اعطای مجوزها انجام دهد.درخواست مجوزهای خطرناکفقط مجوزهای خطرناک نیاز به توافق کاربر دارند. روشی که اندروید از کاربر می خواهد مجوزهای خطرناک را صادر کند به نسخه Android که در دستگاه کاربر اجرا می شود و نسخه سیستم مورد نظر برنامه شما (targetSdkVersion) بستگی دارد.درخواست های زمان اجرا (Android 6.0 و بالاتر)اگر دستگاه Android 6.0 (سطح API 23 یا بالاتر) را اجرا کند، و targetSdk برنامه ورژن 23 (targetSdkVersion) یا بالاتر باشد، هیچکدام از مجوز های مورد نیاز برنامه در هنگام نصب از کاربر درخواست نمی شود. برنامه شما باید از کاربر بخواهد مجوزهای خطرناک را در زمان اجرا اعطا کند.درخواست مجوزها در زمان اجرادرخواست زمان نصب (Android 5.1.1 و پایین تر)اگر دستگاه Android 5.1.1 را اجرا کند (سطح API 22) یا پایین تر، یا targetSdk برنامه ورژن 22 و یا پایین تر باشد، برنامه بر روی هر نسخه از Android که اجرا شود، سیستم به طور خودکار از کاربر می خواهد تا مجوزهای خطرناک را برای برنامه شما در هنگام نصب صادر کند.مجوزهای ویژگیهای سخت افزاریدسترسی به برخی از ویژگی های سخت افزاری (مانند بلوتوث یا دوربین) نیاز به مجوز برنامه دارد. با این حال، همه دستگاه های اندرویدی در واقع از این ویژگی های سخت افزاری برخوردار نیستند. بنابراین اگر برنامه شما CAMERA را درخواست کرده است، شما باید برچسب <uses-feature> را در مانیفست خود بگنجانید تا اعلام کند که آیا این ویژگی در واقع مورد نیاز است یا خیر.مثلا:<uses-feature android:name=&quotandroid.hardware.camera&quot android:required=&quotfalse&quot />اگر شما به صورت android:required="false" استفاده کردید، Google Play به برنامه شما اجازه می دهد تا روی دستگاه هایی که این ویژگی را ندارند نصب شود.سطح حفاظت در اندروید - Android Protection levelsمجوزها به چندین سطح حفاظت تقسیم می شوند. سطح حفاظت برروی درخواست های مورد نیاز زمان اجرا تأثیر می گذارد.سه سطح محافظت وجود دارد که برنامه های شخص ثالث را تحت تأثیر قرار می دهد: normal, signature و dangerous.مجوزهای عادی - Normal permissionsمجوزهای عادی بخش هایی از برنامه شما که به دسترسی به داده ها یا منابع خارج از برنامه نیاز دارد، پوشش می دهد ، اما جایی که خطرات کمی برای حفظ حریم خصوصی کاربر یا عملکرد سایر برنامه ها وجود دارد. به عنوان مثال ، اجازه تنظیم منطقه زمانی یک مجوز معمولی است.اگر یک برنامه در manifest خود اعلام کند که به یک مجوز عادی احتیاج دارد، سیستم بطور خودکار در هنگام نصب برنامه، مجوز را به آن اعطا می کند. در این سیستم کاربر مجوزهای عادی را اعطا نمی کند و نمی تواند این مجوزها را لغو کند.مجوزهای امضا - Signature permissionsسیستم عامل اندروید این مجوزهای برنامه را در زمان نصب اعطا می کند ، اما فقط وقتی که برنامه ای سعی در استفاده از مجوز دارد، توسط همان برنامه ای که مجوز را تعریف می کند امضا شود.هنگامی که شما مجوزی را در برنامه خود تعریف میکنید و از آن مجوز در برنامه دیگر استفاده میکنید، اگر هر دو نرم افزار با یک گواهی امضا شده باشند، سیستم عامل اندروید هنگام نصب نرم افزار (نرم افزاری که درخواست مجوز کرده است) مجوز را به آن اعطا میکند.مجوزهای خطرناک - Dangerous permissionsمجوزهای خطرناک شامل بخش هایی میشود که نرم افزار داده یا منابعی را میخواهد که اطلاعات شخصی کاربر را در بر می گیرد، یا می تواند بر داده های ذخیره شده کاربر یا عملکرد سایر برنامه ها تأثیر بگذارد. به عنوان مثال ، امکان خواندن مخاطبین کاربر یک مجوز خطرناک است. اگر یک برنامه اعلام کند که به یک مجوز خطرناک احتیاج دارد، کاربر مجبور است صریحاً اجازه این برنامه را صادر کند. تا زمانی که کاربر مجوز را تأیید نکند، برنامه شما نمی تواند عملکردی را که به آن مجوز بستگی دارد ارائه دهد.برای استفاده از یک مجوز خطرناک ، برنامه شما باید از کاربر بخواهد مجوز را در زمان اجرا اعطا کند. https://developer.android.com/guide/topics/permissions/overview