تکین وب | آموزش برنامه نویسی
تکین وب | آموزش برنامه نویسی

permissionها در اندروید ۶

۳۰ مهر ۱۳۹۵

اگر شما هم از جمله افراد توسعه دهنده ی نرم افزارهای اندرویدی هستید ، احتمالا از Permissionها برای ایجاد دسترسی های برنامه استفاده کرده اید . باید بدانیم که تا قبل از اندروید ۶ ،  API 23 ، همه ی Permissionها تنها در فایل Manifest قید می شدند و اگر آنها را در این فایل قید نمی کردیم ، حتی اگر کدهای برنامه بدون خطا هم می بودند ، برنامه کرش میکرد .

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

اما از اندروید ۶ به بعد کمی قضیه متفاوت شده است . یعنی کاربر در هنگام نصب برنامه این دسترسی ها را به برنامه نمیدهد . بلکه بعد از اینکه برنامه را نصب کرد و خواست آن را اجرا کند ، پیامی مبنی بر اجازه دادن برای ایجاد این دسترسی ها از کاربر نمایش داده می شود و کاربر با رفتن به  Setting دستگاه اندرویدی و قسمت مدیریت برنامه ها ، برنامه ی مورد نظر را پیدا میکند و مشاهده میکند که تمام Permission هایی که در این برنامه وجود دارد ، آنجا هستند و تنها باید برای اجرای درست این برنامه آنها را فعال کند .

در این صورت شما به عنوان برنامه نویس اندروید ، اگر درحال نوشتن برنامه ای برای اندروید۶ هستید به این نکته توجه کنید که باید علاوه بر ذکر Permission در فایل Manifest ، در اکتیویتی مورد نظر هم باید کدی را بنویسید . در غیر این صورت برنامه کرش می کند و هنگامیکه به بررسی کرش بپردازید خواهید دید که به شما میگوید که Permissionها را قید نکرده اید .

فرض کنید شما می خواهید از READ_CONTACTS استفاده کنید . پس ابتدا باید این Permission  را در فایل Manifest قبل از تگ Application  قید کنید :


<uses-permission android:name="android.permission.READ_CONTACTS"/>

سپس در اکتیویتی مورد نظر ، کدهای زیر را وارد کنید (دقت کنید که در صورتیکه Permission موجود در برنامه تغییر کند ، باید این کد نیز در قسمتی که آن را ذکر کرده اید تغییر کند و اگر از چند Permission استفاده میکنید باید همه ی آنها در توابع موجود ، قید شوند )

public class MainActivity extends AppCompatActivity {
  private final int MY_PERMISSION_REQUEST_READ_CONTACTS = 10;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button btnPer = (Button)findViewById(R.id.btnPer);
    btnPer.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        managmentPermissions();

      }
    });
  }

  private void managmentPermissions() {
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
      ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CONTACTS}, MY_PERMISSION_REQUEST_READ_CONTACTS);
    } else {
      readContacts();
    }
  }

  private void readContacts() {
    Toast.makeText(this, "Read Contats feature call", Toast.LENGTH_SHORT).show();
  }

  @Override
  public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    switch (requestCode) {
      case MY_PERMISSION_REQUEST_READ_CONTACTS:
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
          readContacts();
        } else {
          if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_CONTACTS)) {
            new AlertDialog.Builder(this).setTitle("Read Contacts Permission").setMessage("You need to grant read contacts to use read"+"contacts fearure . Retry and  grant it !!").show();
          } else {
            new AlertDialog.Builder(this).setTitle("Read Contacts Permission denied ").setMessage("You denied read Contacts Permission . so , the feature will be disabled . To enable it , go to settings and grant read contacts for the application").show();
          }

        }
        break;
    }

  }

}

هنگامی که برای اولین بار این برنامه را بر روی امولیتور اجرا میکنید ، با زدن دکمه ی Permission ، پیام زیر ظاهر می شود که شما بازدن ALLOW این دسترسی را برنامه می دهید :

 

allow

درواقع با رفتن به قسمت Setting دستگاه اندرویدی یا در امولیتور این برنامه را در قسمت مدیریت برنامه ها پیدا کنید و قسمت Permissions ها را ببینید . خواهید دید که contacts در آن وجود دارد و فعال شده است :

permission

برای دریافت سورس کد این بخش فایل زیر را دانلود نمایید :

permissionها در اندروید ۶

 در ضمن اگر اینستاگرامی هستید حتما @Takinweb را فالو کنید…

درباره ی عطیه رحمانی

دیدگاه ها

یک دیدگاه ارسال شده !

  1. shayan می‌گه:

    واقعا بابت آموزش خوبتون ممنون عالی و ساده

دیدگاه خود را به ما بگویید.

کلیه ی حقوق مادی و معنوی مطالب متعلق به سایت تکین وب می باشد و کپی برداری و بازنشر آن بدون ذکر منبع کاری غیر حرفه ای و غیر اخلاقی و قابل پیگرد قانونی خواهد بود.
کانال تلگرام تکین وب