Tôi đang cố gắng đính kèm tệp PDF có tên là download.pdf vào email trong Ứng dụng Android của tôi. Tôi đang sao chép tập tin đầu tiên vào SDCard và sau đó đính kèm nó vào email.Đính kèm tệp PDF vào email từ ứng dụng Android - Kích thước tệp là Zero
Tôi không thích hợp, nhưng tôi đang thử nghiệm trên thiết bị tab thiên hà. Đường dẫn lưu trữ bên ngoài trả mnt/sdcard/
Mã của tôi là như sau:
public void sendemail() throws IOException {
CopyAssets();
String emailAddress[] = {""};
File externalStorage = Environment.getExternalStorageDirectory();
Uri uri = Uri.fromFile(new File(externalStorage.getAbsolutePath() + "/" + "download.pdf"));
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.putExtra(Intent.EXTRA_EMAIL, emailAddress);
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Text");
emailIntent.setType("application/pdf");
emailIntent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(emailIntent, "Send email using:"));
}
public void CopyAssets() {
AssetManager assetManager = getAssets();
String[] files = null;
try {
files = assetManager.list("");
} catch (IOException e) {
Log.e("tag", e.getMessage());
}
for(String filename : files) {
InputStream in = null;
OutputStream out = null;
if (filename.equals("download.pdf")) {
try {
System.out.println("Filename is " + filename);
in = assetManager.open(filename);
File externalStorage = Environment.getExternalStorageDirectory();
out = new FileOutputStream(externalStorage.getAbsolutePath() + "/" + filename);
System.out.println("Loacation is" + out);
copyFile(in, out);
in.close();
in = null;
out.flush();
out.close();
out = null;
} catch(Exception e) {
Log.e("tag", e.getMessage());
}
}
}
}
private void copyFile(InputStream in, OutputStream out) throws IOException {
byte[] buffer = new byte[1024];
int read;
while((read = in.read(buffer)) != -1){
out.write(buffer, 0, read);
}
}
}
Vấn đề là các tập tin được đính kèm là 0 byte trong kích thước. Bất cứ ai có thể phát hiện ra những gì có thể sai?
EDIT
Tôi có thể thấy rằng các tập tin đã được lưu vào thiết bị nếu tôi nhìn trong cài đặt, do đó điều này phải là một vấn đề xung quanh như thế nào Tôi gắn file vào email. Trong các lỗi đăng nhập tôi nhìn thấy:
gMail Attachment URI: file:///mnt/sdcard/download.pdf
gMail type: application/pdf
gmail name: download.pdf
gmail size: 0
EDIT
Tự hỏi nếu điều này là một lỗi trên galaxy tab? Nếu tôi mở tập tin thông qua một trình xem pdf (từ ứng dụng của tôi) sau đó cố gắng đính kèm vào một email gmail, kích thước là một lần nữa 0. Bất cứ ai có thể xác minh?
Cảm ơn bạn.
Liệu ứng dụng của bạn có quyền truy cập vào thẻ SD? –
Có - trong tệp kê khai - –
GuybrushThreepwood
Bạn đã kiểm tra kích thước tệp pdf trong 'sdcard' mà bạn đã sao chép bằng phương thức' copyAssets() '. – Praveenkumar