Несколько человек ссылаются на проблему наличия пробелов в имени файла. Я уточню.
Android основан на Linux и поэтому использует файловую систему posix. Это означает, что имена файлов с пробелами вызывают проблемы. Не используйте пробелы, если вы создаете файл или каталог; оставьте их или используйте точки ( .
), тире ( -
) или подчеркивания ( _
). Чтобы загрузить существующий файл с пробелом в нем, вы должны заключить в кавычки файл.
Используя пример из вопроса, замените:
content://com.android.htmlfileprovider/mnt/sdcard/Documents/To%20Read.html?text/html
с этим:
content://com.android.htmlfileprovider/mnt/sdcard/Documents/"To Read.html"?text/html
Если вы просто открываете файл, вы можете заключить в кавычки всю строку. Так:
"/mnt/sdcard/Documents/To Read.html"
В дополнение к пробелам, которые могут вызвать проблемы, системы posix разрешают символы в именах файлов, которые не разрешены в Windows. Чтобы избежать проблем при копировании файлов между системами, даже если некоторые из них по-прежнему разрешены в Windows, не включайте в имена файлов следующие символы:/ \ ? * : % " < > | + # '
Чтобы избежать дальнейших проблем, используйте согласованный стиль прописных букв в именах файлов. Обратите внимание, что системы posix чувствительны к регистру, что означает, что имена файлов чувствительны к регистру. Это означает, что file.txt, FILE.TXT, file.TXT, File.txt, georgE.txt и т. Д. - все это разные файлы в системе posix, хотя они считаются одним и тем же файлом в Windows.