Не удается изменить файл во внешнем хранилище в Android - PullRequest
0 голосов
/ 26 января 2019

Пожалуйста, помогите мне ... Я получаю

java.io.FileNotFoundException: / storage / 'my external storage' / Music / 'имя файла': открыть не удалось: EACCES (разрешениеотказано)

когда я изменяю музыкальные теги id3, которые находятся на моей SD-карте, с помощью jaudiotagger.

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

private void requestExternalStoragePermissions() {
    if (Build.VERSION.SDK_INT >= 23) {
        if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
            Toast.makeText(this, "Permission granted to write your External storage", Toast.LENGTH_SHORT).show();
            start();
        }
        else {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
        }
    }

}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    switch (requestCode) {
        case 1 : {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0&&grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show();
                start();
            }
            else {
                Toast.makeText(this, "Permission denied to access your External storage", Toast.LENGTH_SHORT).show();
            }
            return;
        }
    }
}

savebutton.setOnClickListener(new Button.OnClickListener(){
        @Override
        public void onClick(View view){
            try{
                AudioFile f = AudioFileIO.read(file);
                Tag tag = f.getTag();
                tag.setField(FieldKey.TITLE,editText1.getText().toString());
                tag.setField(FieldKey.ALBUM,editText2.getText().toString());
                tag.setField(FieldKey.ARTIST,editText3.getText().toString());
                tag.setField(FieldKey.ALBUM_ARTIST,editText4.getText().toString());
                tag.setField(FieldKey.YEAR,editText5.getText().toString());
                tag.setField(FieldKey.DISC_NO,editText6.getText().toString());
                tag.setField(FieldKey.TRACK,editText7.getText().toString());
                tag.setField(FieldKey.LYRICS,editText8.getText().toString());
                f.commit();
                Toast.makeText(getApplicationContext(), "Tag Saved", Toast.LENGTH_SHORT).show();
            } catch(Exception e){
                e.printStackTrace();
            }
        }
    });

Как это исправить?

1 Ответ

0 голосов
/ 27 января 2019

В Android 4.4 и выше редактирование файлов на SD-карте больше невозможно. У меня была такая же проблема ..

Единственный обходной путь - скопировать файл во внутреннее хранилище, изменить его и переместить обратно.

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