gpt4 book ai didi

android - 从内部存储发送带有附件的电子邮件

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:32:58 24 4
gpt4 key购买 nike

我按照 android 文档的建议在内部存储上创建文件。准确地说,该文件是在内部存储的特定目录下创建的。我使用模式 world_readable 模式执行此操作。然后稍后我尝试使用电子邮件程序附加文件。我能够附加文件,但是发送电子邮件失败(似乎没有加载文件)我确定它是内部存储/权限问题。

有人知道如何修复它或一个工作示例吗?在外部存储上转换所有内容会很糟糕。

谢谢

Ps:我查了其他帖,好像都没有解决办法(旧帖)

最佳答案

通过授予读取该文件的临时权限作为共享 Intent 的一部分,可以将文件从您的应用程序本地存储共享到另一个应用程序(例如电子邮件附件)。

第 1 步:将文件提供程序添加到您的 AndroidManifest.xml:

<applicaton>
....
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.your.package.name.fileprovider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>
</application>

第 2 步:添加一个文件 res/xml/filepaths.xml,其中包含您要共享的本地应用程序存储中文件的路径:

<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path name="myFolder" path="Folder/"/>
</paths>

第 3 步:在您的 java 代码中创建文件共享 Intent :

    Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
shareIntent.setType("text/plain");
shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Your subject");
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Your message");

ArrayList<Uri> uris = new ArrayList<Uri>();
String shareName = new String(pathToFile + filename);
File shareFile = new File(shareName);
Uri contentUri = FileProvider.getUriForFile(context, "com.your.package.name.fileprovider", shareFile);
uris.add(contentUri);
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);

// Grant temporary read permission to the content URI
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

String msgStr = "Share...";
startActivity(Intent.createChooser(shareIntent, msgStr));

如果您有任何问题,请参阅此处的文档 https://developer.android.com/training/secure-file-sharing/share-file.html了解更多详情。

关于android - 从内部存储发送带有附件的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17740976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com