Невозможно получить URI текстового файла - PullRequest
0 голосов
/ 03 июля 2019

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

Проблема заключается в том,что я не могу получить правильный URI файла.Пожалуйста, помогите мне получить URI.

Вот код

public class TextUpload extends AppCompatActivity {

    private void writeToFile(String data, Context context) throws FileNotFoundException {
        mediaFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath());
        if (!mediaFile.exists()) {
            mediaFile.mkdir();
        }
        byte[] data2 = data.getBytes();

        FileOutputStream f = new FileOutputStream(new File(mediaFile, "textfile.txt"));
        try {
            f.write(data2);
            f.flush();
            f.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        fileUri =  Uri.fromFile(mediaFile);
        Log.d("TAHH" , "URI = "+fileUri);
    }
}

Это значение, которое я сохраняю в fileUri

URI = file:///storage/emulated/0

[roid]

Пожалуйста, помогите мне получить URI выделенного файла.

1 Ответ

2 голосов
/ 03 июля 2019

Основная проблема в том, что вы читаете путь к mediaFile, который является каталогом (а не самим файлом).mediaFile является родительским каталогом файла, который вы хотите.

Итак, измените его на:

mediaFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath());


if (!mediaFile.exists()) {
    mediaFile.mkdir();
}
byte[] data2 = data.getBytes();

// Hold the reference to the file that you are writting
File txtFile = new File(mediaFile, "textfile.txt")
FileOutputStream f = new FileOutputStream(txtFile );

try {
    f.write(data2);
    f.flush();
    f.close();
} catch (IOException e) {
    e.printStackTrace();
}

// Here, use txtFile instead of mediaFile
fileUri =  Uri.fromFile(txtFile);
Log.d("TAHH" , "URI = "+fileUri);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...