2

エミュレーターの SDCard に保存されている添付ファイル付きの電子メールを送信しようとしていますが、問題は添付ファイルなしで電子メールを送信することです。どこで間違ったのか教えてください

ここにコードがあります

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
                emailIntent.setType("text/plain");
                emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] 
                {"djkgotsod@gmail.com"}); 
                emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, 
                "Dear Sir"); 
                emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, 
                "Im doing Android");                 
                Log.v(getClass().getSimpleName(), "sPhotoUri=" + Uri.parse("/mnt/sdcard/../.."+getFilesDir()+"/"+myfile));

                emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("/mnt/sdcard/../.."+getFilesDir()+"/"+myfile));
                startActivity(Intent.createChooser(emailIntent, "Send mail..."));

これが私の丸太猫です

01-20 17:59:04.927: E/Trace(31078): error opening trace file: No such file or directory (2)
01-20 17:59:06.117: D/gralloc_goldfish(31078): Emulator without GPU emulation detected.
01-20 17:59:08.917: V/Main(31078): sPhotoUri=/mnt/sdcard/../../data/data/com.example.emailandroid/files//mnt/sdcard/myfile.csv
01-20 17:59:10.077: I/Choreographer(31078): Skipped 112 frames!  The application may be doing too much work on its main thread.
01-20 17:59:15.267: I/Choreographer(31078): Skipped 30 frames!  The application may be doing too much work on its main thread.

あなたの助けに感謝します

4

1 に答える 1

1

添付ファイルへのパスが正しくないためです。あなたのログは、あなたが間違ったことを明確に指摘しています:

/mnt/sdcard/../../data/data/com.example.emailandroid/files//mnt/sdcard/myfile.csv

ハードコーディングされたパスを使用しないでください。ルートの 2 レベル下にあると想定しないでください。示されているコードのようにディレクトリをトラバースしないでくださいEnvironment.getExternalStorageDirectory()を使用して外部ストレージ (SD カードである必要はありません) のルートを取得し、相対パスを追加して正しい有効な場所を取得します。

于 2013-01-20T18:12:07.213 に答える