رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

خطا در گرفتن مجوز ران تایم در اندروید 6 به بالا


پست های پیشنهاد شده

سلام 

من کد مربوط به گرفتن مجوز دسترسی ران تایم رو استفاده کرده ام ولی تو اندروید 6 به بالا خطا میده . 

کدهاش زیره و قسمت خطا رو ندارم چون دسترسی به اندروید 6 ندارم

private void askForPermission(String permission, Integer requestCode) {
    if (ContextCompat.checkSelfPermission(Create.this, permission) != PackageManager.PERMISSION_GRANTED) {

        // Should we show an explanation?
        if (ActivityCompat.shouldShowRequestPermissionRationale(Create.this, permission)) {

            //This is called if user has denied the permission before
            //In this case I am just asking the permission again
            ActivityCompat.requestPermissions(Create.this, new String[]{permission}, requestCode);

        } else {

            ActivityCompat.requestPermissions(Create.this, new String[]{permission}, requestCode);
        }
    } else {
        // Toast.makeText(getActivity(), "" + permission + " is already granted.", Toast.LENGTH_SHORT).show();
        //   selectImage();
    }
}

کد onRequestpermissionResult هم به صورت زیر هستش

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if(ActivityCompat.checkSelfPermission(Create.this, permissions[0]) == PackageManager.PERMISSION_GRANTED){
        switch (requestCode) {
            //Location

            case 1:


        }
        //  selectImage();
        // Toast.makeText(getActivity(), "Permission granted", Toast.LENGTH_SHORT).show();
    }else{
        Toast.makeText(Create.this, "امکان صدور این مجوز وجود ندارد", Toast.LENGTH_SHORT).show();
    }
}

وقتی که تابع askForPermisstion  فراخوانی میکنی تو اندروید 6 به بالا برای اولین بار خطا میده و بعدش مجوز گرفته میشه.

askForPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, WRITE_EXST);
askForPermission(Manifest.permission.READ_EXTERNAL_STORAGE, READ_EXST);
askForPermission(Manifest.permission.CAMERA, CAMERA);

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

از این کد استفاده کنید

 

private int REQUEST_INTERNET = 1;

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && (ContextCompat.checkSelfPermission(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);

        }


 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 2 سال بعد...

 

متاسفانه بیشتر کدهای ران تایم پرمیژن رو تست کردم روی اندروید 8 برنامه به مشکل میخوره (روی امولاتور اندروید استودیو)ولی روی 9 درست کار میکنه.

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در در 1396/04/06, 08:57:07، alireza123 گفته است :

سلام 

من کد مربوط به گرفتن مجوز دسترسی ران تایم رو استفاده کرده ام ولی تو اندروید 6 به بالا خطا میده . 

کدهاش زیره و قسمت خطا رو ندارم چون دسترسی به اندروید 6 ندارم


private void askForPermission(String permission, Integer requestCode) {
    if (ContextCompat.checkSelfPermission(Create.this, permission) != PackageManager.PERMISSION_GRANTED) {

        // Should we show an explanation?
        if (ActivityCompat.shouldShowRequestPermissionRationale(Create.this, permission)) {

            //This is called if user has denied the permission before
            //In this case I am just asking the permission again
            ActivityCompat.requestPermissions(Create.this, new String[]{permission}, requestCode);

        } else {

            ActivityCompat.requestPermissions(Create.this, new String[]{permission}, requestCode);
        }
    } else {
        // Toast.makeText(getActivity(), "" + permission + " is already granted.", Toast.LENGTH_SHORT).show();
        //   selectImage();
    }
}

کد onRequestpermissionResult هم به صورت زیر هستش


@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if(ActivityCompat.checkSelfPermission(Create.this, permissions[0]) == PackageManager.PERMISSION_GRANTED){
        switch (requestCode) {
            //Location

            case 1:


        }
        //  selectImage();
        // Toast.makeText(getActivity(), "Permission granted", Toast.LENGTH_SHORT).show();
    }else{
        Toast.makeText(Create.this, "امکان صدور این مجوز وجود ندارد", Toast.LENGTH_SHORT).show();
    }
}

وقتی که تابع askForPermisstion  فراخوانی میکنی تو اندروید 6 به بالا برای اولین بار خطا میده و بعدش مجوز گرفته میشه.


askForPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, WRITE_EXST);
askForPermission(Manifest.permission.READ_EXTERNAL_STORAGE, READ_EXST);
askForPermission(Manifest.permission.CAMERA, CAMERA);

 

از کتابخانه Dexterاستفاده کنید

 

 

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...