首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

安卓-无法使用FileProvider添加电子邮件附件

安卓中无法使用FileProvider添加电子邮件附件的问题是由于Android 7.0及以上版本引入的StrictMode限制导致的。StrictMode是一种开发工具,用于帮助开发者发现和解决应用程序中的性能问题和违规操作。

在Android 7.0及以上版本中,StrictMode默认开启了一个名为FileUriExposedException的策略,该策略禁止应用程序使用file:// URI暴露文件给其他应用程序。这是为了增强应用程序的安全性,防止应用程序在处理文件时产生潜在的安全风险。

解决这个问题的方法是使用FileProvider来共享文件给其他应用程序。FileProvider是一个特殊的ContentProvider,它允许应用程序通过content:// URI共享文件给其他应用程序,而不是使用file:// URI。

以下是解决该问题的步骤:

  1. 在AndroidManifest.xml文件中添加FileProvider的配置。在<application>标签内添加以下代码:
代码语言:xml
复制
<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="${applicationId}.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
</provider>
  1. 在res/xml目录下创建一个名为file_paths.xml的文件,并添加以下内容:
代码语言:xml
复制
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path name="external_files" path="." />
</paths>
  1. 在代码中使用FileProvider生成content:// URI,并将其传递给电子邮件附件。例如:
代码语言:java
复制
File file = new File(getExternalFilesDir(null), "attachment.txt");
Uri fileUri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".fileprovider", file);

Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.setType("text/plain");
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Email Subject");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Email Body");
emailIntent.putExtra(Intent.EXTRA_STREAM, fileUri);
emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

startActivity(Intent.createChooser(emailIntent, "Send Email"));

在上述代码中,我们首先创建了一个File对象,指定了要共享的文件路径。然后,使用FileProvider.getUriForFile()方法生成content:// URI。最后,将该URI添加到电子邮件意图的附件中,并通过Intent.FLAG_GRANT_READ_URI_PERMISSION标志授予读取URI的权限。

这样,我们就可以通过FileProvider来安全地共享文件给其他应用程序,解决了无法使用FileProvider添加电子邮件附件的问题。

推荐的腾讯云相关产品:腾讯云对象存储(COS)

腾讯云对象存储(COS)是一种安全、高可用、低成本的云端存储服务,适用于存储和处理各种类型的非结构化数据,包括文本、图片、音频、视频等。它提供了简单易用的API接口和丰富的功能,可以帮助开发者快速构建可靠的存储解决方案。

产品介绍链接地址:https://cloud.tencent.com/product/cos

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

解决7.0谷歌Play商店无法使用问题

测试机型:小米5X 系统版本:7.1 测试工具:go谷歌安装器、改变SELinux模式、访问外国网站工具 说明:以上工具需要root...为什么使用google play呢?google play不仅限于某些游戏的必备工具,还有一些软件方面的原因。...系统升级7.1后,在使用过程中出现了一些问题,谷歌商店一直卡在”正在核对信息……”界面,经过几天的研究问题终于解决了。...我怀疑是升级7.1后,服务框架和账户管理版本太旧,也有可能是谷歌服务架构出错,需要升级新版本。卸载旧版谷歌4件套,使用“go谷歌安装器”重新安装谷歌4件套。...一直卡在”正在核对信息……”这里,谷歌账户也无法登录。网上大部分建议是“更换V**软件”,其实V**软件并没有问题,最后发现需要改变系统内核SELinux宽容模式。

4.6K30
  • 再曝新漏洞:可远程致使用无法接打电话

    本周堪称是设备的“黑色周”,几天前刚被爆出Stagefight媒体库上存在胜似“心脏滴血”的高危漏洞,这两天安全研究人员再曝可远程致使设备无法正常接打电话的最新漏洞。...漏洞概述 趋势科技的安全研究员在设备的mediaserver服务上发现了一个整数溢出漏洞,可远程致使超过全球55%的手机崩溃,连最基本的打电话接电话都不行。...Android 4.3 Jelly Bean及其之后的所有版本均受影响,包括Android 5.1.1 Lollipop,以至于有数百万的用户都可能被黑客攻击。 如何利用?...通过一个恶意的app 2. 通过一个特别构造的网站 最简单的方法就是引诱存在安全问题的手机到一个设有陷阱的网站上。如果是因为这种方法使得手机没反应,只需重启手机即可恢复正常。...恶意APP的工作方式可被设计成:只要手机被打开,APP就会自动运行,此时手机就会出现短暂的不受控制——出现无反应、静音、无法打电话、无法接听电话等情况。

    1.1K100

    Android实现拍照及图片裁剪(6.0以上权限处理及7.0以上文件管理)

    最近做项目中涉及到了图片相关功能 ,在使用6.0手机及7.1手机拍照时,遇到了因权限及文件管理导致程序崩溃等问题。 刚好把功能修改完,把代码简单地贴一下,方便以后使用。...().insert( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); } else { return null; } } } /** * ...layout_constraintTop_toBottomOf="@id/take_photo" / </android.support.constraint.ConstraintLayout –AndroidManifest.xml添加...provider——– <provider android:name="android.support.v4.content.<em>FileProvider</em>" android:authorities="com.innopro.improve.<em>fileprovider</em>...:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" / </provider –资源文件下添加

    70710

    Android适配全面总结(二)----版本适配

    在我们的开发中,会对不同安版本做适配,比如我之前做过的项目中最低兼容到4.4,最高兼容是最新的系统7.1,由于不同版本的系统中部分API版本也不同,我就要对这些API做特殊处理。...一个Uri允许你获取临时权限去读写文件,当使用含有Uri的Intent,可以使用Intent.setFlags来添加临时权限。...(由于Android6.0开始要动态申请权限,所以别忘了,这里就不写了,主要讲FileProvider使用) //适配7.0的fileprovider,imgfile是图片文件路径 public void...} startActivityForResult(cameraIntent, FLAG_CHOOSE_CAMERA); } 想看到拍照、选择照片、裁剪等完整流程的描述,可以参考这篇博客 解决...在运行 Android 8.0 或更高版本的设备上使用此权限时,恶意下载程序将无法骗取用户安装未获得预先授权的应用,所以我们需要加入安装apk文件的权限。

    2.4K10

    MUI、HBuilderX、H5+开发APP本地打包(Android)

    工具准备 开发工具 :HBuilderX(版本2.4.6.20191210) 打包SDK: Android-SDK@2.4.6.71983_20191211,版本要和HBuilderX保持一致,一般都是更新到官方最新版就可以了...修改图标.png 6、修改配置文件 AndroidManifest.xml, build.gradle, 这一步至关重要,稍有不慎APP或无法运行或 闪退、或相关功能不起作用、无法获取相关权限。..." android:authorities="com.genertech.jzapp.dc.fileprovider" android:exported=... 同时application添加provider...使用系统功能时如果不起作用,考虑是否需要申请用户权限 Android Studio 打包时注意gradle版本问题,由于网络问题可能会出现编译失败等问题,直接下载到本地使用更加方便。

    3.8K20

    笔记(十)——存储知识

    ——》个人平时笔记,看到的同学欢迎指正错误,文中多处摘录于各大博主精华、书籍 1、存储相关详解知识 起初早年是有内置SD卡和可扩展插拔TF卡区分的,但是近年手机内置SD卡的高内存导致越来越少的手机支持...com.fivefloor.bo.myview (1)、内存(RAM) 内存与PC的内存是一样的,是用来运行程序,不能用来永久存储数据,手机一旦关机,在内存中的所有数据都将会丢失,内存也是现在人类制造的所有电子设备所必需拥有的...中的运行时内存RAM,每个app一般分配16M或24M或者通过系统底层设置可以更改自定义。 (2)、存储(ROM) 内部存储(ROM): 就是相当于是PC中的硬盘的私有存储角色。...当创建SQLiteOpenHelper实例时,如果已经存在旧数据库(即就数据库版本号存在)就会走onUpgrade方法而不会调用onCreate,这时可以添加表字段或添加新表等操作升级数据库。...7、7.0使用Uri访问本地文件添加了行为权限,Android 框架执行StrictMode API 的政策禁止在应用外部公开 file://URI,分享私有文件内容需要通过使用FileProvider

    1.3K31

    课程表课程设计_工程经济学课程设计

    Integer.valueOf(course.getId())); } catch (SQLException e) { e.printStackTrace(); } } 五、总结 对于...以最快的速度学习Android,掌握开发中的各种控件的使用,理解了Android开发框架,学习SQLite数据库的使用。 这次综合课程设计是对自己的一个挑战,对于,在经过努力,最终一步步都解决了。...附件1: 课设题目 基于Android的课程表应用软件 技术说明 序 号 技术名称 分类 应用与实现 1 UI设计 课程表布局,以及菜单界面,多种布局的嵌套及控件的使用, 2 SQLite数据库 课表添加与删除修改...3 Activity组件的应用 添加课表单周双周课表添加与跳转 4 ListView的使用 使用listview加载数据库课表信息进行显示 UML类图 代码 清单文件: <?...” android:authorities=”com.example.write.fileprovider” android:exported=”false” android:grantUriPermissions

    90050

    android: API24 及以上版本调用系统相机时报:FileUriExposedException 的解决

    我们使用 getUriFromFile( ) 获取Uri 之后,在 7.0 及以后的版本中调用系统相机时将不会在崩溃,示例代码如下: 三、示例代码: (1)、在清单文件中注册 FileProvider...是API22推出的,所以在API22及以后的版本中就可以支持FileProvider,22、23 既可以使用原有的Uri.from(file) 方式也可以使用 FileProvider, 24 及以后必须使用...FileProvider 解决7.0及以后系统中使用 Uri.fromUri() 获取URI之后调用相机崩溃的情况 * 6、getExternalCacheDir()获取当前APP对应的缓存目录,使用该方式不用申请读写...takePhotoMode = ""; } /** * 发送广播更新相册,不更新的话,在相册中将无法查看到截取的图片 * ATTENTION...文中的内容对应其中的 b_26_TakePhotoWithSysMethod API版本 与 Version 的对应关系 https://source.android.com/setup/build-numbers

    66920

    如何在手机上编辑Excel表格?

    ONLYOFFICE版办公替你解决问题,接下来给大家演示一下。Excel表格ONLYOFFICE电子表格处理软件,主要用于对数据的处理、统计、分析、与计算。...官网下载,安装完成后,打开ONLYOFFICE版,点击“文件”,然后点击“打开”,选择要编辑的Excel文件,点击“打开”可以在ONLYOFFICE版中编辑Excel表格。...用户可以根据自己的需要使用这些功能来编辑Excel表格如果需要,可以使用ONLYOFFICE版的图表功能,将数据可视化,以便更好地理解和分析数据。...多人协作并且ONLYOFFICE电子表格支持多人协作,在自己的小团队里集齐多人力量和智慧来编辑或修改,或者添加评论或建议,更加高效的提升了团队的办公效率。...总之,ONLYOFFICE版是一款功能强大的文档编辑器,可以让用户在设备上轻松编辑Excel表格。它支持多种编辑功能,可以让用户轻松调整表格的样式,并可以将文档保存到本地或云端。

    1.6K50

    新增眼神控制功能!走路玩手机会警报,相册也可以加锁

    系统又迎来了一系列小更新!...除此之外,目前手机无障碍功能大多面向非运动障碍和非语言障碍的人群,但如果无法触碰手机或使用语音功能的人群,可能就没办法和手机进行交互。...即使沙发已经「吃掉了」你的遥控器,也可以利用手机打开电视,浏览推荐的频道,甚至可以从手机上启动喜欢的节目。 还可以使用手机键盘快速键入复杂的密码、电影名称或搜索词。...这项功能在Google TV 和其他电视操作系统设备上都可以使用,通过在你的手机上的快速设置中添加远程互动程序,或者通过访问谷歌电视应用程序来访问,并且已经在14个国家可以使用了。...另外,如果是双SIM手机用户,现在可以选择通过Android Auto系统在拨打电话时选择使用哪个SIM卡。

    1.5K50

    学TikTok不一定要做短视频,谷歌想把YouTube打造成购物平台

    这就意味着,作为全球最大的视频网站,YouTube已经开始要求创作者使用其软件进一步追踪视频中的产品。随后这些数据将被链接到Google的分析和购物工具中去。...到了今年早些时候,YouTube进一步为直播添加了货物展示功能,同时提供了适用于化妆教程的AR视听模式,以及其他和电子商务相关的广告工具,这也能够为创作者提供更多途径,以便他们能够获得更为直接的收益。...毕竟,从国内开始进入移动互联网时代以来,移动化几乎早已成为恒久不变的课题,虽然在移动端Google还拥有这一大杀器,但相比有自己手机的苹果而言,的优势并不明显。...且随着中美之间的矛盾日益突出,能否进入中国市场几乎还是完全的未知数,而在中国以外的市场,虽然的用户数量并不少,但大量数据分析公司的报告都显示了一个关键性的问题——用户的价值远不及苹果。...这就意味着广告主为用户付费的意愿仍旧相对较低。

    57941

    Rafel RAT恶意软件可能影响39亿台旧手机

    威胁攻击者正在大量部署一种名为「Rafel RAT」的开源恶意软件,攻击「过时」设备。...Check Point 分析大量网络攻击活动后发现,受害者运行的版本已达到生命周期终点(EoL),其中 87.5% 运行 11 及以上版本,只有 12.5% 的受感染设备运行 Android 12...据此推测,有超过39亿台的设备/手机(包括用户弃用)或被暴露在这一威胁之下。...值得一提的是,Rafel RAT 恶意软件支持的命令因变种而异,但一般包括以下命令: 勒索软件:启动设备上的文件加密进程; wipe:删除指定路径下的所有文件; 锁定屏幕:锁定设备屏幕,使设备无法使用;...最后,安全专家强调想要抵御 Rafel RAT 恶意软件攻击,请避免从可疑来源下载 APK,不要点击电子邮件或短信中嵌入的 URL,并在启动应用程序前使用 Play Protect 扫描。

    13510
    领券