Java.io.FileNotFoundException:/storage/emulated/0/Новый файл .txt: open failed: EACCES (Permission denied)

Я пытался зашифровать файлы и записать эти файлы обратно в то же место. Но я получил сообщение об ошибке "java.io.FileNotFoundException: /storage/emulated/0/New file.txt: open failed: EACCES (Permission denied)".

Мой файл Manifest это

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.tdk.mytestapplication2">

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


<application
    android:allowBackup="true"

Я думаю, что я дал правильное разрешение там. И код, который я использую для шифрования файлов, таков.

public static void encrypt(SecretKey secretKey, String filePath){
    try {
        // Here you read the cleartext.
        FileInputStream fis = new FileInputStream(filePath);
        // This stream write the encrypted text. This stream will be wrapped by another stream.
        FileOutputStream fos = new FileOutputStream(filePath);

        // Create cipher
        Cipher cipher = Cipher.getInstance("AES");
        cipher.init(Cipher.ENCRYPT_MODE, secretKey);
        // Wrap the output stream
        CipherOutputStream cos = new CipherOutputStream(fos, cipher);

        // Write bytes
        int b;
        byte[] d = new byte[8];
        while ((b = fis.read(d)) != -1) {
            cos.write(d, 0, b);
        }

        // Flush and close streams.
        cos.flush();
        cos.close();
        fis.close();

    }catch(IOException e){
        e.printStackTrace();
    }catch (NoSuchAlgorithmException e){
        e.printStackTrace();
    }catch(NoSuchPaddingException e){
        e.printStackTrace();
    }catch(InvalidKeyException e){
        e.printStackTrace();
    }
}

И я использовал этот метод внутри кнопки

Button btnEncrypt = (Button) findViewById(R.id.btnEnc);
    btnEncrypt.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            aesKey = EncAndDec.generateKey();
            String filePath = editText.getText().toString();
            //Generating the file hash
            String md5Hash = MD5Hash.getMD5(filePath);

            System.out.println(aesKey.toString());
            System.out.println(filePath);
            System.out.println(md5Hash);

            //Encrypting the file
            for(int i=1; i<100; i++) {
                EncAndDec.encrypt(aesKey, filePath);
            }
        }
    });

Тем не менее я не мог настроить эту ошибку. Пожалуйста, помогите кому-нибудь!

Ответ 1

Я подозреваю, что вы используете Android 6.0 Marshmallow (API 23) или более поздней версии. Если это так, вы должны реализовать разрешения времени выполнения, прежде чем пытаться читать/записывать внешнее хранилище.

Ответ 2

Внедрение разрешения на запуск для запуска вашего приложения на Android 6.0 Marshmallow (API 23) или более поздней версии.

или вы можете вручную включить разрешение на хранение -

параметры goto > apps > "your_app_name" > нажмите на него > затем щелкните по разрешениям > затем включите хранилище. Вот оно.

Но я предлагаю перейти к первому, который есть, Внедрить разрешения во время выполнения в вашем коде.

Ответ 3

Используйте для вопросов об использовании Android Studio, официальной IDE, нацеленной на разработку Android. НЕ используйте для вопросов о программировании для Android в целом; вместо этого используйте

Ответ 4

java.io.FileNotFoundException: /storage/emulated/0/New file.txt: открыть не удалось: EACCES (В доступе отказано) Не ponit mcent browser Kaya jiz

Ответ 5

Не понял mcent browserjava.io.FileNotFoundException: /storage/emulated/0/Новый file.txt: открыть не удалось: EACCES (разрешение отклонено)

Ответ 6

Медленная монета 1000 быстрых ходов

Ответ 7

Не понить mcent browser Kaya kr