Android调用系统邮件发送附件 文件大小0B

来源:互联网 发布:zipfor mac中文破解版 编辑:程序博客网 时间:2024/05/29 11:49

最近公司App用户反馈出现某些操作会导致数据和界面异常,在友盟上没有发现错误日志,后台也没有做传送日志的功能,坑,没有办法定位。。

想起可以开发一个给用户发送日志的功能,让用户把异常日志采用邮件的形式发送过来,算是临时方案吧。

问题来了,在Android7.0调用系统邮件API(首先手机上要设置好相应邮箱的账户和密码,会有提示如何设置)时,将日志文件作为附件传递过去,在邮箱发送界面的附件文件大小为0B,检查文件是正常存在的,并且通过手动方式选择的附件文件都是正常的。

分析原因

  • 调用系统邮件API的问题
    检查代码,调用邮件的API很简单,已经设置类型为文件流形式,排除。

  • 访问权限问题,文件存放路径无法访问,导致无法获取文件流
    log日志文件存放目录为cache,需要兼容7.0的私有权限问题(不兼容会抛出exposed beyond app through ClipData.Item.getUri()异常,并且文件大小为0B)
    7.0之前使用Uri.fromfIle(file)正常访问,文件正常
    7.0之后需要通过FileProvider并且在path下设置cache-path权限进行访问,文件大小为0B

    更换文件存储路径为外部存储,需要兼容7.0的私有权限问题(不兼容会抛出exposed beyond app through ClipData.Item.getUri()异常,并且文件正常显示)
    7.0之前使用Uri.fromfIle(file)正常访问,文件正常
    7.0之后需要通过FileProvider并且在path下设置external-files-path权限进行访问,文件大小为0B

  • 系统邮件客户端的问题
    更换QQ邮箱客户端后正常
    无论文件是存放在cache下面还是外部存储目录下文件都显示正常

原创粉丝点击