Разрешения на запись предоставлены, но они отклонены во время выполнения - PullRequest
0 голосов
/ 01 декабря 2018

Я добавил разрешения на запись на внешнее запоминающее устройство в манифесте и предоставил их на своем телефоне Android.Я даже спрашиваю их во время выполнения, если они не существуют.

Однако я всегда получаю это исключение:

java.io.FileNotFoundException: / storage / emulated / 03b3d97bd-5186-4506-97dc-9994b7ce0761 (В доступе отказано)

У вас есть представление, почему?

Код

try {

    if (Build.VERSION.SDK_INT >= 23) {
        int permissionCheck = ContextCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
        if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
        }
    }


    OutputStream output = new FileOutputStream(Environment.getExternalStorageDirectory() + image_uuid);
    byte[] buffer = new byte[1024];
    int bytesRead;
    BitmapDrawable bitmapDrawable = (BitmapDrawable) temp.getDrawable();
    etc. etc. etc.

И в файле манифеста:

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

1 Ответ

0 голосов
/ 01 декабря 2018

Вы записываете файл на SD-карту, прежде чем получите разрешение. Вы должны дождаться результата предоставления разрешения, используя следующий код:

@Override
public void onRequestPermissionsResult(int requestCode,
        String permissions[], int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE/*1 in here*/: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // permission was granted
                // write file here
            } else {
                // permission denied
            }
            return;
        }

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

см. здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...