6

Androidアプリのメールにdownload.pdfというPDFファイルを添付しようとしています。最初にファイルをSDカードにコピーしてから、メールに添付します。

関連性はありませんが、GalaxyTabデバイスでテストしています。外部ストレージパスはmnt/sdcard/を返します

私のコードは次のとおりです:

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);
    }
}
}

問題は、添付されているファイルのサイズが0バイトであるということです。誰かが間違っているかもしれないものを見つけることができますか?

編集

設定を見ると、ファイルがデバイスに保存されていることがわかります。したがって、これは、ファイルを電子メールに添付する方法に関する問題である必要があります。私が見ているエラーログで:

gMail Attachment URI: file:///mnt/sdcard/download.pdf
gMail type: application/pdf
gmail name: download.pdf
gmail size: 0

編集

これがギャラクシータブのバグかどうか疑問に思いますか?(アプリから)PDFビューアを介してファイルを開き、Gmailメールに添付しようとすると、サイズは再び0になります。誰かが確認できますか?

ありがとうございました。

4

4 に答える 4

0

download.pdf ファイルが SDCard に存在する場合。したがって、問題はファイルから Uri を取得することです。これを試してください、それは私のために働きます。

Uri uri = Uri.fromFile(new File("/sdcard/", "download.pdf"));
于 2012-05-21T14:49:28.633 に答える
0

私にも同じ問題が発生します。例のいくつかの方法を使用してそれをクリアしました。私はあなたの質問に似た質問にすでに答えました。多分それはあなたを助けることができます。

于 2012-05-22T10:05:21.127 に答える
0
File externalStorage = Environment.getExternalStorageDirectory();    
String PDFpath = externalStorage.toString();
String pdfpath =path.replace("/mnt","");
Uri uri = Uri.parse(new File("file://" + pdfpath));
于 2012-12-18T08:52:47.590 に答える