android中的拍照相册使用中遇到的坑

在安卓中拍照会遇到的一些坑

1.拍照时候的权限问题

2.相册选择照片的文件路径问题(7.0之后)

3.去往拍照后,activity可能被回收,需要进行数据保存

4.uri与文件路径的转换(7.0)

一,自从6.0以后,就不行了,需要给它增加权限才可以调用。

实现的方法很简单就是在需要调用到以上授权的时候判断一下。如果没有授权就弹出MaterialDialog提示用户进行授权。

在这里我使用的第三方框架EasyPermissions

二,在7.0之后使用获取地址

FileProvider.getUriForFile(Context context,String authority,File file).

在同一个应用中可以使用Uri.fromFile(newFile()),在不用的应用中需要使用FileProvider.getUriForFile(Context context,String authority,File file)
.

第一步:在manifest清单文件中注册provider

<provider

android:name="android.support.v4.content.FileProvider"

android:authorities="com.jph.takephoto.fileprovider"

android:grantUriPermissions="true"

android:exported="false">

android:name="android.support.FILE_PROVIDER_PATHS"

android:resource="@xml/file_paths" />

心得:exported:要求必须为false,为true则会报安全异常。grantUriPermissions:true,表示授予 URI 临时访问权限。

第二步:指定共享的目录

为了指定共享的目录我们需要在资源(res)目录下创建一个xml目录,然后创建一个名为“file_paths”(名字可以随便起,只要和在manifest注册的provider所引用的resource保持一致即可)的资源文件,内容如下:

<>xml version="1.0" encoding="utf-8">

<resources>

     <path>

<external-path path="" name="camera_photos"/>

</paths>


</resources>

●代表的根目录: Context.getFilesDir()

●代表的根目录: Environment.getExternalStorageDirectory()

●代表的根目录: getCacheDir()

心得:上述代码中path="",是有特殊意义的,它代码根目录,也就是说你可以向其它的应用共享根目录及其子目录下任何一个文件了,如果你将path设为path="pictures",那么它代表着根目录下的pictures目录(eg:/storage/emulated/0/pictures),如果你向其它应用分享pictures目录范围之外的文件是不行的。

三.activity进入拍照,拍照后返回 activity,有时activity会被销毁,然后重新创建activity(原因:相机比较占用内存,后台的activity被kill了),activity页面的数据丢失。

onSaveInstanceState(Bundle outState)方法里面保存数据 ,

onRestoreInstanceState(Bundle savedInstanceState)恢复数据,

四.根据回调中获取到的uri去转换成文件路径,getPath(Activity context,Uri imageUri)

百度一下就有很多这个方法



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,687评论 25 708
  • 只简述我发现问题的根源,有些是适配了7.0,会报权限失败问题,那是由于没有动态授权导致,接下来我一步一步给大家实现...
    Wocus阅读 2,404评论 4 5
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,573评论 0 17
  • Android7.0发布已经有一个多月了,Android7.0在给用户带来一些新的特性的同时,也给开发者带来了新的...
    东经315度阅读 1,383评论 0 14
  • 一袭白色天鹅绒长裙 背景浩渺水天 舞台布景般真实 那样的优雅 生动如梦幻 水天相接处的 乃远处所在 优美舞姿 多是...
    微风LG阅读 260评论 0 4