解决Android 4.1以上拍照丢失问题:三星手机适用
5星 · 超过95%的资源 需积分: 9 99 浏览量
更新于2024-09-11
收藏 741B TXT 举报
在Android平台上,尤其是在4.1及以上版本中,拍照功能可能会遇到一个问题,即用户可能无法正常获取拍摄的照片。这通常是因为新系统的权限管理和存储策略有所变化。针对这一问题,本文提供了一种解决方案,特别针对三星手机进行了完美测试。
首先,了解问题的核心在于Android 4.1(API级别16)引入了新的MediaStore.ACTION_IMAGE_CAPTURE意图处理机制。当用户尝试通过ACTION_IMAGE_CAPTURE启动相机应用拍摄照片时,如果没有正确设置输出路径,系统可能会默认将照片保存在设备内部存储,而不是外部存储(如SD卡),从而导致用户在某些情况下无法访问到拍摄的照片。
为了解决这个问题,开发者需要明确指定照片的保存位置。代码示例中提到的方法是:
1. 创建一个新的Intent对象,用于启动相机应用程序:
```java
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_MEDIA_ALBUM, true); // 设置照片保存到相册,而非私密文件夹
context.startActivityForResult(intent, REQUEST_CODE_GETIMAGE_BYCAMERA);
```
这个`EXTRA_MEDIA_ALBUM`属性确保了拍摄的照片会出现在系统的媒体库中,但没有直接指定输出路径。
然而,如果系统检测到SD卡不存在或者没有写入权限,开发者应该提供一个外部存储的URI作为输出路径:
```java
if (FileUtils.exitSdCard()) {
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.parse("file:///sdcard/ Pictures/")); // 指定SD卡图片保存目录
context.startActivityForResult(intent, REQUEST_CODE_GETIMAGE_BYCAMERA);
} else {
Toast.makeText(context, R.string.sdcard_not_exists, Toast.LENGTH_SHORT).show(); // 显示提示信息告知用户SD卡不可用
}
```
这里,`FileUtils.exitSdCard()`函数用于检查SD卡是否存在。如果存在,程序会创建一个指向SD卡图片目录的URI,以便在拍照后自动将照片保存到那里。如果SD卡不可用,应用会显示一个提示信息,让用户知道问题所在。
总结来说,解决Android 4.1及以上系统获取不到图片的问题,关键在于确保指定照片的保存位置,并处理SD卡可用性。开发者需要根据应用需求和用户场景,适当地设置ACTION_IMAGE_CAPTURE的输出路径,以确保在不同系统版本下都能正常获取拍摄的照片。同时,对于SD卡相关的错误处理也是必不可少的,以提供良好的用户体验。
2019-05-09 上传
2021-01-05 上传
2013-02-04 上传
125 浏览量
2013-01-11 上传
点击了解资源详情
2013-07-31 上传
2014-04-16 上传
csc2010888
- 粉丝: 0
- 资源: 4
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫