Как получить разрешение сразу ,без повторного вызова?

введите сюда описание изображения

Я спрашиваю разрешение и только потом повторно проверяю и если разрешение дано использую. Я хочу сразу как только нажать разрешить ( чтобы уже работал код) Код слишком быстро проскакивает не дожидаясь ответа!

  public void onClick_download(View v) {


        if (ActivityCompat.checkSelfPermission(MainActivity2_3.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) !=
                PackageManager.PERMISSION_GRANTED)
        {

            ActivityCompat.requestPermissions(MainActivity2_3.this, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);
            if (ActivityCompat.checkSelfPermission(MainActivity2_3.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) ==
                    PackageManager.PERMISSION_GRANTED)
            {  Toast.makeText(getApplicationContext(), "YEs", Toast.LENGTH_SHORT ).show();}
            else
            {  Toast.makeText(getApplicationContext(), "no", Toast.LENGTH_SHORT ).show();}

        }

        else
        {


        }

    }

Ответы (1 шт):

Автор решения: Сергей Бувака

Здесь вы делаете свой запрос на пермишен в месте где вам это необходимо.

// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
        Manifest.permission.READ_CONTACTS)
        != PackageManager.PERMISSION_GRANTED) {

    // Permission is not granted
    // Should we show an explanation?
    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
            Manifest.permission.READ_CONTACTS)) {
        // Show an explanation to the user *asynchronously* -- don't block
        // this thread waiting for the user's response! After the user
        // sees the explanation, try again to request the permission.
    } else {
        // No explanation needed; request the permission
        ActivityCompat.requestPermissions(thisActivity,
                new String[]{Manifest.permission.READ_CONTACTS},
                MY_PERMISSIONS_REQUEST_READ_CONTACTS);

        // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
        // app-defined int constant. The callback method gets the
        // result of the request.
    }
} else {
    // Permission has already been granted
}

После чего вы переопределяете

    @Override
    public void onRequestPermissionsResult(int requestCode,
            String[] permissions, int[] grantResults) {
        switch (requestCode) {
            case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
                // If request is cancelled, the result arrays are empty.
                if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    // permission was granted, yay! Do the
                    // contacts-related task you need to do.
                } else {
                    // permission denied, boo! Disable the
                    // functionality that depends on this permission.
                }
                return;
            }

            // other 'case' lines to check for other
            // permissions this app might request.
        }
    }

И выполняете свой код в зависимости от ответа пользователя на пермишен.

https://developer.android.com/training/permissions/requesting#java здесь более подробно.

→ Ссылка