در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

آموزش کنترل مجوزها در اندروید در زمان اجرا و درخواست مجوز

سلام به ITPRO های عزیز.از اندروید نسخه 6 به بعد (سطح API 23) کاربران می توانند در حالی که برنامه در حال اجرا است مجوز ها را کنترل کنند. تا قبل از این نسخه مجوز برنامه در زمان نصب برنامه کنترل می شد. این کار باعث می شود که نصب برنامه راحت صورت بگیرد زیرا که لازم نیست که کاربر اول مجوز ها را مطالعه و بررسی کند و بعد برنامه را نصب کند (بگذریم که همیشه برنامه ها را بدون بررسی مجوز ها نصب می کردیم :D) همچنین این روش به کاربر کمک می کند تا بتواند قدرت بیشتری در دادن مجوز به برنامه ها داشته باشد. برای مثال در این روش کاربر می تواند مجوز استفاده از دوربین را به برنامه بدهد ولی مجوز استفاده از GPS را به برنامه ندهد. علاوه بر این امکانات کاربر می تواند هر وقت که بخواهد به قسمت تنظیمات رفته و مجوز ها را از برنامه بگیرد. مجوز ها به دو دسته تقسیم می شوند. مجوز های معمولی و

مجوزهای خطرناک

  • مجوز های معمولی مجوز هایی هستند که نمی توانند به حریم خصوصی کاربر آسیبی بزنند. اگر برنامه شما یک سری مجوز معمولی را در manifest خود داشته باشد اندروید به صورت اتوماتیک این مجوز ها را به برنامه خواهد داد. اتصال به اینترنت یکی از این مجوز ها می باشد.
  • مجوزهای خطرناک مجوز هایی هستند که می توانند به برنامه اجازه دستیابی به داده های حیاتی کاربر را بدهند. اگر برنامه این مجوز ها را در manifest خود داشته باشد اندروید از کاربر به ازای تک تک این مجوز ها تاییدیه می گیرد.

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

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

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

درخواست مجوز از کاربر

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

if (ContextCompat.checkSelfPermission(thisActivity,
                Manifest.permission.READ_CONTACTS)
        != PackageManager.PERMISSION_GRANTED) {

    // نمایش توضیحات در صورت نیاز
    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
            Manifest.permission.READ_CONTACTS)) {

        // محلی که می توان برای کاربر توضیحات فرستاد
    } else {

        // No explanation needed, we can request the permission.

        ActivityCompat.requestPermissions(thisActivity,
                new String[]{Manifest.permission.READ_CONTACTS},
                MY_PERMISSIONS_REQUEST_READ_CONTACTS);    }
}

متد shouldShowRequestPermissionRationale برای مشخص کردن این است که کاربر نیاز به توضیحات دارد یا خیر. این متد زمانی true برمی گرداند که قبلا ما مجوز را درخواست داده ایم و کاربر آن را رد کرده است. اگر کاربر بر روی گزینه don’t ask again کلیک کرده باشد این متد false برمی گرداند و همچنین اگر خود دستگاه اجازه دسترسی به مجوز مورد نظر را ندهد این متد False برمی گرداند.

بررسی نتیجه درخواست مجوز

گفتیم که نتیجه در خواست ها در یک متد callback قرار می گیرد. به این شکل که وقتی ما درخواست یک مجوز را می دهیم در نتیجه یک متد با نام onRequestPermissionsResult صدا زده می شود. در این متد ما می توانیم تشخیص دهیم که کاربر مجوز را داده است یا خیر. در کد زیر برای مجوز دسترسی به مخاطبان را نشان می دهد. دقت کنید که از کد درخواستی که ما داشتیم در این متد استفاده می شود.

@Override
public void onRequestPermissionsResult(int requestCode,
        String permissions[], int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
            // اگر درخواست مجوز کنسل شده باشد نتیجه خالی خواهد بود
            if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                // مجوز دریافت شده است

            } else {

                // مجوز دریافت نشده است.
               
            }
            return;
        }

    }
}

#آموزش_گام_به_گام_اندروید #درخواست_مجوز_از_کاربر #انواع_مجوزهای_اندروید #تشخیص_مجوزهای_اندروید #دسترسی_به_منابع_اندروید #آموزش_برنامه_نویسی_اندروید #مجوزهای_اندروید #درخواست_مجوز_اندروید
0 نظر

هیچ نظری ارسال نشده است! اولین نظر برای این مطلب را شما ارسال کنید...

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....