前言:

我,一个菜鸡,昨天跟室友聊天倾诉了一下安卓的“令人头大”性,对比一下html/css,得出了一个“Java又当爹又当妈”这样的结论,不过事实上也是如此,被权限折磨已久的我也没什么好说的,先记录下来再说,但本文还有一些没有解决的问题,希望有大佬来解决。

正文:

问题:

FileUriExposedException: file:/// *** exposed beyond app through ClipData.Item.getUri()

解决方法:

private void initPhotoError(){
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
builder.detectFileUriExposure();
}

问题:

Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=999, r

根据代码,可能的 bug 有:

  1. 缺少运行时权限声明:在 AndroidManifest.xml 中声明运行时权限是必要的,而且需要在代码中动态获取权限。

  1. 文件读写异常:如果 SD 卡不存在或者没有权限访问,那么在初始化头像时可能会抛出 FileNotFoundException 或者其他异常。

  1. 调用相机拍照崩溃:在 Android 7.0 及以上版本中,使用 File Uri 可能会抛出 FileUriExposedException 异常,需要在应用中添加 StrictMode 限制,或者使用 Content Uri 代替 File Uri。

  1. 图片裁剪异常:在某些机型或者系统版本中,图片裁剪功能可能不稳定或者无法使用,需要对图片裁剪的返回结果进行检查和处理。

  1. 内存泄漏:在 Fragment 中使用 ViewBinding 时,需要在 Fragment 销毁时及时解绑,否则可能会导致内存泄漏

manifest权限:

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"tools:ignore="ProtectedPermissions" />

下方application中的添加

android:requestLegacyExternalStorage="true"

关于上面这一行我说两句:

我在调试拍照、添加图片的过程中(我是HUAWEI Mate 30 5G)发现我的手机在访问内存的时候看似一切正常(其实也有bug,没有写入,只有读取),等我用小伙伴的红米手机的时候就出了大问题,直接添加不上了,连裁剪都直接跳过了,我百思不得其解,加入了上下文中提到的好多种方法,但都是无济于事。(华为的报错还不是传统报错,而在logcat里面warning了,日志还是得多看,多看!)

java.io.FileNotFoundException: /storage/emulated/0/DCIM/xxx.jpg: open failed: EACCES (Permission denied)

关于Android Q分区存储的一些适配心得 - 掘金 (juejin.cn)

啊确实,这位老哥说得好:

“任何一个APP, 一旦拿到了外部权限(WRITE_EXTERNAL_STORAGE)后,就可以在你的内部存储的根目录下肆意建立文件夹了,这导致几乎每个Android用户的内部存储活像一个垃圾桶,想必大多数人都体验过在这一堆文件夹中定位自己的某一个文档的痛苦吧。“

所以我直接把图片放在了/data/data/appname/

毕竟自己生产的垃圾要自己处理


运行时权限:

if (Build.VERSION.SDK_INT >= 23) {int REQUEST_CODE_CONTACT = 101;String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE};//验证是否许可权限for (String str : permissions) {if (LocalActivity.this.checkSelfPermission(str) != PackageManager.PERMISSION_GRANTED) {//申请权限LocalActivity.this.requestPermissions(permissions, REQUEST_CODE_CONTACT);return;} else {//这里就是权限打开之后自己要操作的逻辑}}}

原文连接:https://blog.csdn.net/qq_37014804/article/details/108336685

没有深入了解的部分(先留在这里)

isCasting false because IHwDistributedWindowManager is invalid.

这个日志信息可能是由于在调用Cast API时,设备的窗口管理器 (Window Manager) 没有正确地配置而导致的。这可能会影响到设备与其他设备的连接或者屏幕镜像。

可能的解决方法:

  1. 检查是否有权限访问窗口管理器。

  1. 确保设备连接的网络稳定,并且没有任何阻碍设备间通信的防火墙或路由器设置。

  1. 确认设备系统版本是否兼容 Cast API,如果不兼容,则需要升级系统版本。

  1. 尝试重新启动设备或者应用程序,看看是否能够解决问题。

E/libEGL: pre_cache appList: ,,

这条日志信息提示在执行 OpenGL ES 相关的操作时,系统将预加载应用程序列表(即将会使用 OpenGL ES 功能的应用程序列表)。其中的两个逗号说明当前没有任何应用程序被预加载,这是正常情况。

W/Parcel: Expecting binder but got null!

这条日志信息通常出现在 Android 应用程序中使用 Android Binder IPC 通信机制时,出现了一些问题。它表明应用程序试图接收 Binder 数据,但数据不是 Binder 类型,而是 null,可能是由于以下原因之一:

  1. 应用程序与其它组件进行通信时发生了异常,导致接收到空的数据。

  1. 应用程序中的代码或第三方库的代码出现问题,无法正确地序列化或反序列化数据。

这种情况下,可以通过查看日志的上下文信息,找到引起异常的代码行,然后进行排查和修复。同时,还可以考虑使用 try-catch 语句来捕获异常,以便更好地处理问题。

Error inserting timezone=GMT+08:00 consuming_time=0 source= result_code=10000

不太明白,我也没有相应调用。

最后,忙活了一上午,还是circleimageview和foreground救我了一命,解决了在image上面显示边框的问题,所以有些时候还要发挥一点自己的想象力(在自己大脑过载,搜索引擎也过载的情况下)。

如果你读到了这里,且本文对你有帮助,那真的是太好了,本文一定有很多没讲清楚的地方与疏漏,恳请大家批评指正,祝大家身体健康,生活愉快!

安卓日志:拍照、文件读取的问题相关推荐

  1. 安卓11 Sdcard文件读取权限问题

    谷歌在安卓11更新了外部储存设备读写规范问题. 在这里给新手进行一下排雷 首先用 file.exists() 判断文件是否可以读写是不可取的,因为新版本安卓中判断文件存在和能否读取权限是不一样的. 如 ...

  2. 安卓日志系统初探(带你了解Android日志系统的概貌)

    目录 1 介绍 2 ADB的原理 2.1 adbd服务进程 2.2 ADB 服务端 2.2.1 USB方式 2.2.2 网络方式 2.2.3串口方式 2.3 ADB 客户端 3 安卓框架中日志的收集和 ...

  3. Unity安卓应用闪退-使用DDMS工具查看安卓日志/ADB真机调试

    前言 最近遇到一个应用闪退问题,在某些机型和mumu模拟器上会出现,而其他机型和模拟器都是正常的,从Unity代码层面并没有发现问题,只能利用安卓调试看看了 工具 首先需要的工具: DDMS:查看安卓 ...

  4. 学习笔记Spark(四)—— Spark编程基础(创建RDD、RDD算子、文件读取与存储)

    文章目录 一.创建RDD 1.1.启动Spark shell 1.2.创建RDD 1.2.1.从集合中创建RDD 1.2.2.从外部存储中创建RDD 任务1: 二.RDD算子 2.1.map与flat ...

  5. 一文贯通python文件读取

    不论是数据分析还是机器学习,乃至于高大上的AI,数据源的获取是所有过程的入口. 数据源的存在形式多为数据库或者文件,如果把数据看做一种特殊格式的文件的话,即所有数据源都是文件.获得数据,就是读取文件的 ...

  6. 一文贯通python文件读取 1

    版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载. https://blog.csdn.net/wireless_com/article/details ...

  7. 工作中用到的安卓日志相关命令(logcat)

    1. 打印安卓日志,在cmd中使用adb shell logcat:在adb shell下直接打logcat 2. 如果不想打印占用终端,则加个&号,即logcat & 3. 如果想把 ...

  8. Pandas 文件读取和导出

    Pandas 文件读取和导出 更新时间:2020-12-28 00:16:20标签:pandas io 说明 Pandas 中文教程修订中,欢迎加微信 sinbam 提供建议.纠错.催更.查看更新日志 ...

  9. java读取html文件内容的代码_【代码审计】xyhcms3.5后台任意文件读取

    1前言 一个很老的cms了,感谢小阳师傅给的练手cms,以下仅为此cms其中一个任意文件读取漏洞和任意文件删除漏洞的审计笔记. 2Cms目录分析 拿到这个cms的时候发现是基于thinkphp3.2. ...

  10. 【网络安全面试题】——文件目录穿越实现特权文件读取

    4.7. 文件读取 考虑读取可能有敏感信息的文件 用户目录下的敏感文件 .bash_history .zsh_history .profile .bashrc .gitconfig .viminfo ...

最新文章

  1. FeignClientAutoConfiguration
  2. android 悬停按钮,Android悬浮按钮的使用方法
  3. 竹子博客Linux,linux学习--美化自己的centos7
  4. Spring学习记录(九)---通过工厂方法配置bean
  5. Console.Write(程序猿?开发?写代码?编程?移动、网页、桌面开发?Oh,我连菜鸟都不是!);...
  6. 广州python平均薪资_爬取广州的python和Java薪资,为什么Python 高于Java(有代码)...
  7. 数百万行自研代码都捐了,华为将欧拉捐赠给开放原子开源基金会
  8. mysql随机查询多条记录表_MySQL 随机查询表中N条记录
  9. python电脑下载安装-python
  10. 怎么看linux的命令说明,在linux下,怎么用命令来查看版本?
  11. 测试可变字符序列stringBuilder
  12. 加速计/陀螺仪/磁力计是什么,3轴/6轴/9轴传感器又是什么?
  13. Python str islower()方法
  14. java考勤表导出_Sql通过存储过程生成全年日历考勤表数据
  15. 小虾米的求助Massage
  16. 番茄助手VA_X的安装
  17. 疯狂的架构,BAT加华为、联想、新浪公司组织结构图一览
  18. python熊猫弹幕_GitHub - qingyuj/danmu: Python 弹幕包 A live danmu package for python
  19. 从运维技术架构变化初探运维组织转型
  20. http://www.cnblogs.com/zyw-205520/archive/2013/02/17/2914190.html

热门文章

  1. CreateCompatibleDC 说明
  2. (新手版)GitHub安装和配置教程for Windows(肯定看得懂)
  3. 单目标跟踪OTB、VOT数据集介绍
  4. java 计算器 正负号转换_java新手自己实现的计算器,有点乱
  5. Nature计算社会科学特刊:如何对21世纪人类社会进行有意义的度量?
  6. 公网异地远程访问家中/公司的群晖NAS
  7. CentOS Netcat 用法
  8. 阿里云智能 AIoT 首席科学家丁险峰:阿里全面进军 IoT 这一年 | 问底中国 IT 技术演进...
  9. hexo pjax“暂时”解决aplayer插件间断播放问题
  10. 基于随机森林模型的葡萄酒品质分析