3

Intent を使用して、sdcard のフォルダーに含まれるファイル (.log ファイル) を送信しようとしています。これはコードです:

public void sendMail() {
            Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
            intent.setType("text/plain");
            intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"name.surname@gmail.com"});
            intent.putExtra(Intent.EXTRA_SUBJECT, "Log files");
            intent.putExtra(Intent.EXTRA_TEXT, "body");
            //has to be an ArrayList
            ArrayList<Uri> uris = new ArrayList<Uri>();
            //convert from paths to Android friendly Parcelable Uri's
            if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
                File root = Environment.getExternalStorageDirectory();

                File logfolder = new File(root, "log");


                for (String file : logfolder.list()){
                    Uri u = Uri.parse(file);
                    uris.add(u);
                }
                intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
                startActivity(Intent.createChooser(intent, new String("Send mail...")));
            }

        }

メニューから Gmail を選択します。Gmail を開くと、受信者、件名、テキスト、および添付ファイルを含むメールが正しく表示されます。メールはエラーなしで送信されますが、「添付ファイルを表示できませんでした」というステータス バーの通知が表示されます。実際、受信者は電子メールを正しく受信しますが、添付ファイルはありません。何が問題なのかわかりません。添付ファイルが送信されないのはなぜですか? 私を助けてください!!

4

1 に答える 1

5

Ok。私は解決策を見つけます。これを置き換える必要があります:

for (String file : logfolder.list()){
   Uri u = Uri.parse(file);
   uris.add(u);
}

これとともに:

for (File file : logfolder.listFiles()){
    Uri u = Uri.fromFile(file);
    uris.add(u);
}
于 2013-03-13T16:05:37.933 に答える