我需要一个意图同时将文件发送到Messenger(WhatsApp等)和Email客户端(Gmail等)之类的应用程序。但是,由于某些原因,我不了解Gmail,在收件人字段中显示了文件uri。
我原来的uri是: [package_name] .debug.generic.tools.GenericFileProvider / external_files / 1544617983061.pdf
接收者的最终身份是: // [package_name] .debug.generic.tools.GenericFileProvider / external_files / 1544617983061.pdf
从Gmail截屏:
有一些错误的代码:
Uri uri = FileProvider.getUriForFile(fragment.getActivity(), fragment.getActivity().getApplicationContext().getPackageName() + ".generic.tools.GenericFileProvider", externalFile);
Intent intentSend = new Intent(Intent.ACTION_SEND);
intentSend.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intentSend.setDataAndType(uri, "application/pdf");
intentSend.putExtra(Intent.EXTRA_STREAM, uri);
intentSend.putExtra(Intent.EXTRA_SUBJECT, name);
intentSend.putExtra(Intent.EXTRA_EMAIL, new String[]{"test@provider.com"});
try {
fragment.startActivity(Intent.createChooser(intentSend, fragment.getString(R.string.external_file_send_chooser)));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(fragment.getActivity(), R.string.external_file_send_no_activity, Toast.LENGTH_LONG).show();
}
有人知道发生了什么吗?我的数据uri如何解释为收件人?
文件本身已正确附加到电子邮件,并且WhatsApp也成功发送了文件。
编辑: 问题已经在这里回答: Content URI passed in EXTRA_STREAM appears to "To:" email field