آشنایی با مجوزها در برنامهنویسی اندروید
فیلم آشنایی با مجوزها در برنامهنویسی اندروید
متن به همراه عکس آشنایی با مجوزها در برنامهنویسی اندروید
در این مقاله میخواهیم با مجوزها، نحوهی اضافه کردن و چگونگی استفاده از آنها آشنا شده و نحوه کدنویسی مجوزها در برنامه نویسی اندروید را یاد بگیریم.
مجوزها و کاربرد آنها
زمانی که از ویژگیهایی در اپلیکیشن خود استفاده میکنیم، برخی از این ویژگیها نیاز به اجازهی کاربر دارند. مثلا از ویژگیهای مورد استفاده در اپلیکیشن ما میتواند استفاده از دوربین و یا اینترنت کاربر باشد. برای استفاده از این ویژگیها نیاز داریم که ایتدا اپلیکیشن از کاربر اجازه بگیرد تا از آنها در برنامه استفاده شود.
برای گرفتن مجوز از کاربر باید دو مرحله را انجام دهیم:
1_ اول از همه باید مجوز خود را داخل منیفست تعریف کنیم.
2_ به وسیلهی کدنویسی از کابر بخواهیم که داخل اپلیکیشن اجازهی استفاده از آن ویژگی را بدهد تا بتوانیم از آن استفاده کنیم.
تعریف مجوز داخل منیفست
ابتدا مراحل زیر را طی میکنیم:
app>manifest>AndroidManifest.xml
1_ قبل از تگِ اپلیکیشن (<application) در خط 4، دکمهی اینتر را میزنیم و و یک تگ باز میکنیم.
2_ گزینهی uses_permission را انتخاب میکنیم که لیستی از مجوزها را به ما نشان میدهد.
3_ براساس چیزی که میخواهیم میتوانیم مجوز مدنظر را انتخاب و از آن استفاده کنیم.
برای مثال مجوز WRITE_EXTERNAL_STORAGE (مجوز ساخت پوشهی جدید در اپلیکیشن اندروید) را انتخاب میکنیم.
1 |
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> |
بعد از تعریف مجوز داخل منیفست، باید آن را داخل جاوا کدنویسی کنیم.
در اندرویدهای نسخهی6 به قبل، تمامی مجوزها را داخل منیفست میگرفتیم و وقتی کاربر اپلیکیشن را اجرا میکرد، هنگام نصب آن، لیست مجوزها داده میشد و از کاربر اجازهی آنها را میخواست تا اپلیکیشن نصب شود. اگر کاربر اجازه نمیداد اپلیکیشن هم نصب نمیشد. اما در اندرویدهای نسخهی 6 به بعد (Api23 به بعد) ویژگی جدیدی به سیستم عامل اندروید اضافه شد که اپلیکیشن بدون گرفتن مجوزها نصب میشد و در هنگام اجرای اپلیکیشن، مجوزها از کاربر گرفته میشد. در واقع به اصطلاح ویژگی runtimepermission داده شد. (یعنی در لحظه و هنگام اجرا مجوز گرفتن)
برای مثال، فرض کنید که در حال استفاده از اپ تلگرام هستید و میخواهید برای دوستتان به اصطلاح voice بفرستید. تا لحظهای که روی کلید voice کلیک نکردید مجوز استفاده از میکروفون گوشی گرفته نشده است. وقتی روی دکمه کلیک میکنید، صفحهای برایتان باز میشود که درخواست مجوز برای استفاده از میکروفون گوشی است تا اپلیکیشن بتواند صدای شما را ضبط کند. این همان ویژگی runtimepermission است.
ابتدا مراحل زیر را طی میکنیم:
java>com.kazemieh.www.myapplication(اولین پوشه)>MainActivity
کدنویسی های زیر را انجام میدهیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
@Override protect voide onCreate (Bundel savedInstanceState) { super. onCreate (Bundel savedInstanceState), setContentView (R.layout.activity_main); if (ContextCompat.checkSelfPermission(context this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(activity :MainActivity.this, new String[ ] {Manifest.permission.WRITE_EXTERNAL_STORAGE},requestCode: 1); } else { Toast.makeText(getApplicationContext(), text:"مجوز قبلا داده شده است" , Toast.LENGTH_LONG).show() ; } } 27@Override 28public void onRequestPermissionsResult(int requestCode,@ NonNull String[ ] permissions, @NonNull int[ ] grantResults ({ 29super.onRequestPermissionsResult(requestCode, permissions, grantResults); 30if (requestCode == 1) { 31if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 32Toast.makeText (getApplicationContext(), text:”ممنون که مجوز را دادید ”, Toast.LENGTH_LONG). Show(); } else { 34Toast.makeText(getApplicationContext(),text:”برای اجرای درست اپلیکیشن باید مجوز را بدهید”, Toast.LENGTH_LONG).show(); } } } } |
1_ در خط 20، شرطی را ایجاد میکنیم که اپلیکیشن، مجوز دادن کاربر برای ایجاد پوشهی جدید را بررسی کند. اگر کاربر اجازه داده است، از آن ویژگی استفاده کند. (Context Compat به معنی کل پروژه است.)
PackageManager.Permission_Granted _2لیستی از مجوزهایی است که کاربر برای استفادهی اپلیکیشن داده و در گوشی کاربر ذخیره شده است.
3_ در خط 21، درصورت نداشتن مجوز درخواست مجوز از کاربر را مینویسیم. وهمچنین requestcode (عددی را انتخاب میکنیم برای بررسی مجوز از طرف کاربر) را مینویسیم. میتوانیم هر عددی را برای این قسمت انتخاب کنیم.
4_ در خط 22، els را اضافه میکنیم که اگر برنامه مجوز نداشت، آن را بگیرد و اگر هم مجوز داشت، کد بعدی را اجرا کند.
5_ در خط 23، توست (Toast) را اضافه میکنیم.
6_ در خط 28، متدی را اضافه میکنیم که بررسی کند آیا کاربر مجوز را صادر کرده یا نه که براساس آن، پیغامی را که خودمان انتخاب میکنیم به کاربر نشان دهد.
7_ در خط29، شرط بررسی requestcode را قرار میدهیم.
8_ در خط 31، شرط بررسی طول آرایه (grantresults.length) را قرار میدهیم و درصورتی که طول آرایه با PackageManager.Permission_Granted برابر باشد، یعنی کاربر تایید کرده و مجوز داده شده است.
9_ در خط32، توست (Toast) را اضافه میکنیم و پیغامی برای کاربر ایجاد میکنیم.
10_ در خط 33، els را اضافه میکنیم که اگر کاربر مجوز نداده بود، پیغامی که میخواهیم را به کاربر نشان دهد.
سپس پروژه را اجرا میکنیم.
مشاهده میکنیم که پیغامی روی صفحه ظاهر میشود که درخواست مجوز از کاربر برای استفاده از فایلا ها است.
وقتی گزینه ی Deny را انتخاب کنیم، میبینیم که پیغامی به صورت زیر نشان میدهد که در واقع همان پیغامی است که ما برای کاربر نوشتیم، اما به خاطر طولانی بودن جمله، آن را به این صورت نشان میدهد.
عکس
جمله ها را به انگلیسی تغییر میدهیم؛ اپلیکیشن را پاک میکنیم و دوباره پروژه را اجرا میکنیم و درصورت انتخاب Deny و یا Allow میبینیم که پیغامهای جدید را نشان میدهد.
حال فرض کنید میخواهیم از دو مجوز در اپلیکیشن استفاده کنیم.
ابتدا مراحل زیر را طی میکنیم و در مجوز بعدی را داخل منیفست اضافه میکنیم
app>manifest>AndroidManifest.xml
1 |
<uses-permission android:name="android.permission.CAMERA"/> |
برای مثال میتوانیم مجوز استفاده از دوربین گوشی را اضافه کنیم.
سپس وارد قسمت جاوا میشویم و کدنویسی زیر را انجام میدهیم.
java>com.kazemieh.www.myapplication(اولین پوشه)>MainActivity
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
@Override protect voide onCreate (Bundel savedInstanceState) { super. onCreate (Bundel savedInstanceState), setContentView (R.layout.activity_main); if (ContextCompat.checkSelfPermission(context this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(context this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(activity.MainActivity.this, new String[ ] {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission CAMERA },requestCode: 1); } else { Toast.makeText(getApplicationContext(), text:"letter" , Toast.LENGTH_LONG).show() ; } } @Override public void onRequestPermissionsResult(int requestCode,@ NonNull String[ ] permissions, @NonNull int[ ] grantResults ({ super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == 1) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { Toast.makeText(getApplicationContext(), text:”yes”, Toast.LENGTH_LONG). Show(); } else { Toast.makeText(getApplicationContext(),text:”no”,Toast.LENGTH_LONG).show(); } } } } |
1_ در انتهای خط 20، دو تا خط صاف قرار میدهیم که به معنی “یا” هست
2_ در خط 21، شرط بررسی مجوز دادن توسط کاربر برای استفاده از دوربین را قرار میدهیم و به صورت شرط قبل مینویسیم.
در خط درخواست گرفتن مجوز از کاربر را ایجاد میکنیم.
اپلیکیشن را بار دیگر حذف میکنیم و دوباره پروژه را اجرا میکنیم.
با اضافه کردن مجوز دیگر مشاهده میکنیم که در زیر متنی که به عنوان درخواست مجوز، به کاربر نشان میدهد، عددی ایجاد شده که نشاندهندهی تعداد درخواستها برای مجوزهای مختلف است.
درنهایت توانستیم مجوز را به اپلیکیشن خود اضافه و از آن استفاده کنیم.
دانلود فایل
مطالب زیر را حتما بخوانید
-
نحوهی کار با ویدئوپلیر (Video Player) از طریق پوشهی raw
7.51k بازدید
-
آلرت دیالوگ (AlertDialog) چیست و نحوهی کار با آن چگونه است؟
7.08k بازدید
-
اسنکبار (Snackbar) در اندروید
4.6k بازدید
-
ّFloating action Button (فلوتینگ اکشن باتن) در اندروید
4.42k بازدید
-
نحوهی کار با فریم لیوت (FrameLayout)
4.91k بازدید
-
یک روش برای تمرکز در برنامهنویسی
3.3k بازدید
دیدگاهتان را بنویسید