آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

پرسیدن دسترسی دراندروید 6 به بعد فقط برای بار اول

126943  8 سال پیش  8 سال پیش
0 0

سلام من کد زیر رو برای زمانی که بخواد مجوز دسترسی تو اندروید 6 به بالا بگیره رو می گذارم منتها میخوام زمانی که اجازه توسط کاربر صادر شد برای بار اول ، برای بارهای دیگه این پیام رو نشون نده چی باید بکنم 

با تشکر

int REQUEST_INTERNET = 1;
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && 
(ContextCompat.checkSelfPermission(Session.this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED)) { requestPermissions(new String[]{ android.Manifest.permission.WRITE_EXTERNAL_STORAGE , android.Manifest.permission.READ_EXTERNAL_STORAGE , android.Manifest.permission.READ_PHONE_STATE }, REQUEST_INTERNET); } else {}
0 0
اول چک کن ببین پرمیشن بهش داده یا نه اگه نداشت این کد اجرا کنه اگه نه هم که هیچی (8 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
وحید گروسی  8 سال پیش
0 0

متد زیر رو وقتی میخوای رویداد  اتفاق بیفته قرار بده و مثلاً با یه دکمه صداش کن
البته مجوز هاتو تو منیفست باید لحاظ کنی و یه نکته دیگه اینجا من SMS زدم شما هر چی نیازتون بود بزارین

          if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.SEND_SMS)!= PackageManager.PERMISSION_GRANTED) {
                    if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.SEND_SMS)) {
                        Snackbar.make(btn, "برای گرفتن عکس، این دسترسی لازم است", Snackbar.LENGTH_LONG).setAction("اجازه دادن", new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.SEND_SMS}, 100);
                            }
                        }).show();
                    } else {
                        ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.SEND_SMS}, 100);
                    }
                } else {
                    afterPermission();
                }

و بعد برای اینکه بفهمی که درخواست داده شده یا نه از متد زیر استفاده کن

         if (requestCode == 100) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {afterPermission();
            } else {
                if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.SEND_SMS)) {
                    Snackbar.make(view, "برای گرفتن عکس، این دسترسی لازم است", Snackbar.LENGTH_LONG).setAction("اجازه دادن", new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.SEND_SMS}, 100);
                        }
                    }).show();
                } else {
                    Snackbar.make(view, "برای گرفتن عکس، این دسترسی لازم است", Snackbar.LENGTH_LONG).setAction("اجازه دادن", new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            Intent i = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                            i.setData(Uri.fromParts("package", getPackageName(), null));
                            startActivity(i);
                        }
                    }).show();
                }
            }
        }

متد زیر هم اگه تو کد های بالا دقت کنی وقتی بهش مجوز داده میشه صدا زده میشه و عملی انجام میده.

     private void afterPermission() {
        Toast.makeText(this, "دسترسی داده شد!", Toast.LENGTH_SHORT).show();
        G.sendTestSms();
    }

 


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .