مهدی عادلی فر
بنیانگذار توسینسو و برنامه نویس

آموزش کار کردن با مجوزهای اندروید : کار با Permission های Android

چگونه با مجوزهای اندروید کار کنیم ؟ سیستم عامل اندروید برای رعایت حریم خصوصی کاربران و یکپارچگی سیستم دسترسی هر کدام از برنامه ها را به بخش های مختلف محدود کرده است. اگر برنامه ای بخواهد به یک منبع خارج از محدوده خود دسترسی داشته باشد باید کاربر اجازه چنین کاری را به او بدهد. در این صورت مشخص می شود که برنامه مورد نظر مجوز دارد یا خیر. اندروید مجوز های بسیاری دارد که برنامه ها می توانند از آنها استفاده کنند.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

معرفی مجوز های اندروید

در هر پروژه اندرویدی برای این که کاربر مشخص کند که از کدام منابع استفاده خواهد کرد باید مجوز استفاده از آن را در فایل android.manifest را معرفی کند. با توجه به این که حساسیت یک مجوز چقدر بالا باشد اندروید می تواند آن مجوز را به صورت اتوماتیک به شما بدهد و یا از کاربر سوال کند. در اندروید های نسخه 5 و پایین تر مجوز ها هنگام نصب برنامه ازکاربر سوال می شوند. ولی در اندروید های 6 به بالا هنگام اجرا از شما سوالی پرسیده می شود که آیا مجوز مورد نظر را به برنامه می دهید یا خیر.

از کجا بفهمیم که برنامه ما به چه مجوزهایی نیاز دارد؟

هنگامی که شما در حال توسعه یک برنامه برای اندروید هستید باید دقت داشته باشید که وقتی که از یک برنامه دیگر برای انجام کاری استفاده می کنید نیازی به گرفتن مجوز مورد نظر ندارید. برای مثال اگر شما قصد دارید که به مخاطبان دستگاه دسترسی داشته باشید باید مجوز READCONTACTS را بگیرید ولی اگر برای خواندن مخاطبان یک درخواست به برنامه contancts داشته باشید برنامه شما نیازی به مجوز READCONTACTS ندارید. ولی برنامه contacts به مجوز مورد نظر نیاز دارد. برای این که بدانید برنامه شما یه چه مجوز هایی احتیاج دارد نشانه اش این است که قسمت مربوطه که هنوز مجوز آن را معرفی نکرده ایم به درستی کار نخواهد کرد. برای مثال شما یک برنام دارید که عکس ها را از اینترنت لود می کند ولی مجوز دسترسی به اینترنت را به برنامه خود نداده اید. در این صورت برنامه برای لود کردن فایل مورد نظر خطا می دهد.

افزودن مجوز مورد نظر به پروژه

برای معرفی کردن یک مجوز به برنامه باید آن را داخل فایل androidmanifest با استفاده از تگ <uses-permission> استفاده می کنیم. دقت کنید که این تگ ها را در سطح بالای این فایل xml می نویسیم. در کد زیر یک مثال از دادن مجوز ها آورده شده است.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.snazzyapp">
    <uses-permission android:name="android.permission.SEND_SMS"/>
        <application ...>
        ...
    </application>
</manifest>

چک کردن این که آیا برنامه مجوز مورد نظر را دارد یا خیر

اگر برنامه شما نیاز به یک مجوز مهم داشته باشد بهتر است که قبل از این که از کلاس های مربوط به آن مجوز استفاده کنید ببینید برنامه مجوز مورد نظر را دارد یا خیر. برای چک کردن این که یک مجوز را دارا هستیم یا خیر از متد ContextCompat.checkSelfPermission() استفاده می کنیم. برای مثال اگر بخواهیم ببینیم که مجوز نوشتن در تقویم را داریم یا خیر از کد زیر استفاده می کنیم.

int permissionCheck = ContextCompat.checkSelfPermission(thisActivity,
        Manifest.permission.WRITE_CALENDAR);

در کد بالا اگر مقدار بازگشتی permissionCheck برابر با PackageManager.PERMISSIONGRANTED باشد به این معنی است که برنامه مجوز مورد نظر را دارد و اگر مقدار برگشتی برابر با PERMISSIONDENIED بود به این معنی است که برنامه مجوز مورد نظر را ندارد.


مهدی عادلی فر
مهدی عادلی فر

بنیانگذار توسینسو و برنامه نویس

مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم.

نظرات