Я могу прикрепить текстовый файл к электронному письму с помощью этого кода:
String fileName = "test.txt";
path = "file://" + Environment.getExternalStorageDirectory() + "/" + fileName;
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(path));
startActivity(Intent.createChooser(sendIntent, "Email"));
Однако письма, отправленные через gmail, не содержат вложения, если fileName="test#.txt"
.
Я пробовал кодирование пути с помощью URLEncoder, как показано ниже, но это не работает ни с "text.txt", ни с "text #.txt".
Я, вероятно, пропустил здесь что-то простое, но как мне закодировать пути к файлам со специальными символами для отправки намерений?
String fileName = "test.txt";
// String fileName = "test#.txt";
String path = "file://" + Environment.getExternalStorageDirectory() + "/" + fileName;
String encPath = URLEncoder.encode(path);
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(encPath));
startActivity(Intent.createChooser(sendIntent, "Email"));
Это потому, что вы неправильно кодировали URL-адрес. Вместо того, чтобы кодировать только имя файла, вы закодировали полный URL-адрес, что приводит к:
file://te#st.txt
file%3A%2F%2Fte%23st.txt
Попробуйте это вместо этого:
String path = "file://" + Environment.getExternalStorageDirectory() + "/";
path += URLEncoder.encode( fileName );