alireza123

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

4 ارسال در این موضوع قرار دارد

سلام 

من کد مربوط به گرفتن مجوز دسترسی ران تایم رو استفاده کرده ام ولی تو اندروید 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);

        }


 

1 کاربر پسند دیده است

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


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

 

متاسفانه بیشتر کدهای ران تایم پرمیژن رو تست کردم روی اندروید 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استفاده کنید

 

 

 

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


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

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری