如果我使用一个简单的:
intent.putExtra(Intent.EXTRA_STREAM, detailsuri);
...那么它就可以工作。但是如果我尝试使用
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
......那么它就不会附加任何东西。我可以一次附加一个文件,这样就可以成功地附加每个文件。所以这两个文件都没有问题。下面是创建文件、获取URI并构建Intent的完整代码。
我遗漏了什么?为什么我不能附加多个文件?
File outputDir = controller.getDocumentStorageDir();
String jsontext = buildDbText();
File dbfile = new File(outputDir, "db.json");
FileWriter writer = new FileWriter(dbfile);
writer.write(jsontext);
writer.close();
Uri jsondburi = Uri.fromFile(dbfile);
String appdetails = buildDetailsText();
File detailsfile = new File(outputDir, "details.txt");
FileWriter writer = new FileWriter(detailsfile);
writer.write(appdetails);
writer.close();
Uri detailsuri = Uri.fromFile(detailsfile);
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:")); // only email apps should handle this
intent.putExtra(Intent.EXTRA_EMAIL, new String[] { custsupportEmail });
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, emailbody);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
ArrayList<Uri> uris = new ArrayList<>();
uris.add(detailsuri);
uris.add(jsondburi);
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
startActivity(intent);
2条答案
按热度按时间sh7euo9m1#
lymgl2op2#
W/Bundle:关键字android.intent.extra.STREAM应为Parcelable,但值为java. util. ArrayList。已返回默认值。