Имя файла Android с пробелом не может быть открыто - PullRequest
3 голосов
/ 19 марта 2012

Мой код работает правильно при открытии файла в SDCard.Однако если я открою имя файла с пробелами, произойдет ошибка (пример: путь - "/ sdcard / download / hello hi.jpg").

Я попытался использовать string.replace ("", "% 20");это не работает

try {
    File file = new File(paths);
    if (file.exists()) {
        Uri path = Uri.fromFile(file);
        Intent intent = new Intent(Intent.ACTION_VIEW);
        String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(paths));

        if (!mimeType.equals("")) {
            intent.setDataAndType(path, mimeType);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
        } else {
            Toast.makeText(this, "Unsupported Format to Open", Toast.LENGTH_SHORT).show();
        }
    }
} catch (ActivityNotFoundException e) {
    Toast.makeText(this, "No Application Available to View this File", Toast.LENGTH_SHORT).show();
} catch(Exception e) {
    Toast.makeText(this, "Error Occurred", Toast.LENGTH_SHORT).show();
}

Пожалуйста, помогите

Ответы [ 3 ]

9 голосов
/ 05 сентября 2016

Попробуйте:

Uri uri = Uri.parse(paths);
File file = new File(uri.getPath());

Uri.parse исправляет все проблемы с пробелами / обратной косой чертой / недопустимыми символами в путях и создает «хороший» URI.

4 голосов
/ 19 марта 2012

Вам нужно сбежать из пробелов.Попробуйте заменить "" на "\"

1 голос
/ 05 декабря 2017

Заменить % 20 пробелом, как показано ниже

filePath =  filePath.replaceAll("%20"," ");

Это сработало для меня

...