
基于Picker的受限权限适配方案
Picker由系统独立进程实现,应用可以通过拉起Picker组件,用户在Picker上选择对应的资源(如图片、文档等),应用可以获取Picker返回的结果。
类型 | 受限权限 | 使用的picker |
音频 | ohos.permission.READ_AUDIO,ohos.permission.WRITE_AUDIO | AudioViewPicker |
文件 | ohos.permission.READ_DOCUMENT,ohos.permission.WRITE_DOCUMENT | DocumentViewPicker |
照片 | ohos.permission.READ_IMAGEVIDEO,ohos.permission.WRITE_IMAGEVIDEO | PhotoViewPicker |
联系人 | ohos.permission.READ_CONTACTS | Contacts Picker |
相机 | ohos.permission.CAMERA | Camera Picker |
扫码 | ohos.permission.CAMERA | 扫码Picker |
卡证识别 | ohos.permission.CAMERA | 卡证识别Picker |
文档扫描 | ohos.permission.CAMERA | 文档扫描Picker |
目前支持的Picker组件有:
- 音频Picker(AudioViewPicker):选择、保存音频文件。
- 文件Picker(DocumentViewPicker):选择、保存文档文件。
- 照片Picker(PhotoViewPicker):选择、保存图片文件。
- 联系人Picker(Contacts Picker):选择联系人。
- 相机Picker (Camera Picker):拍照、录制。
- 扫码Picker:扫码。
- 卡证识别Picker:识别并提取卡证信息。
- 文档扫描Picker:拍摄文档并转化为高清扫描件。
- 投播组件Picker:可用于将音视频资源投放到其它设备播放。
音频Picker
使用音频Picker(AudioViewPicker)可访问、保存用户公共目录的音频文件。
- 在应用需要申请权限ohos.permission.READ_AUDIO以访问用户公共目录的音频文件时,可以使用FilePicker中的AudioViewPicker替代,使用方式请参考:选择音频类文件。
- 在应用需要申请权限ohos.permission.WRITE_AUDIO以修改用户公共目录的音频文件时,可以使用FilePicker中的AudioViewPicker替代,使用方式请参考:保存音频类文件。
- save返回的uri权限是读写权限,可以根据结果集中uri进行文件读写等操作。注意不能在picker的回调里直接使用此uri进行打开文件操作,需要定义一个全局变量保存uri,使用类似一个按钮去触发打开文件。使用fs.openSync接口,通过uri打开这个文件得到fd。这里需要注意接口权限参数是fs.OpenMode.READ_WRITE。最后再将通过fs.read读取到selecturi的音频文件的buffer,再通过fd使用fs.writeSync接口将buffer写入这个音频文件,编辑修改完成后关闭fd。
文件Picker
使用文件Picker(DocumentViewPicker)可访问、保存公共目录中非媒体类型的文件。
- 在应用需要申请权限ohos.permission.READ_DOCUMENT以访问用户公共目录中非媒体类型的文件时,可以使用FilePicker中的DocumentViewPicker替代,使用方式请参考:选择文档类文件。
- 在应用需要申请权限ohos.permission.WRITE_DOCUMENT以修改用户公共目录中非媒体类型的文件时,可以使用FilePicker中的DocumentViewPicker替代,使用方式请参考:保存文档类文件。
- save返回的uri权限是读写权限,可以根据结果集中uri进行文件读写等操作。注意不能在picker的回调里直接使用此uri进行打开文件操作,需要定义一个全局变量保存uri,使用类似一个按钮去触发打开文件。使用fs.openSync接口,通过uri打开这个文件得到fd。这里需要注意接口权限参数是fs.OpenMode.READ_WRITE。最后通过fd使用fs.writeSync接口对这个文件进行编辑修改,编辑修改完成后关闭fd。
照片Picker
使用照片Picker(PhotoViewPicker)可访问、保存公共目录的图片或视频文件。
- 在应用需要申请权限ohos.permission.READ_IMAGEVIDEO以访问用户公共目录的图片或视频文件时,可以使用PhotoViewPicker替代,使用方式请参考:使用Picker选择媒体库资源。
- 在应用需要申请权限ohos.permission.WRITE_IMAGEVIDEO以保存用户公共目录的图片或视频文件时,可以使用安全控件替代,使用方式请参考:使用安全控件创建媒体资源。
联系人Picker
使用联系人Picker(Contacts Picker)可读取联系人数据。
在应用需要申请权限ohos.permission.READ_CONTACTS以读取联系人数据时,可以使用Contacts Picker替代,使用方式请参考:选择联系人。
相机Picker
使用相机Picker (Camera Picker)可实现拍照、录制。
在应用需要申请权限ohos.permission.CAMERA以使用相机时,可以使用Camera Picker替代,使用方式请参考:cameraPicker.pick。
扫码Picker
使用扫码Picker可调用相机,实现默认界面扫码。
在应用需要申请权限ohos.permission.CAMERA以使用相机扫码时,可以使用扫码Picker替代,使用方式请参考:默认界面扫码。
卡证识别Picker
使用卡证识别Picker可调用相机,识别各类证件并提取卡证信息。
在应用需要申请权限ohos.permission.CAMERA以使用相机识别卡证时,可以使用卡证识别Picker替代,使用方式请参考:卡证识别。
文档扫描Picker
使用文档扫描Picker可调用相机,拍摄文档并转化为高清扫描件。
在应用需要申请权限ohos.permission.CAMERA以使用相机扫描文档时,可以使用文档扫描Picker替代,使用方式请参考:文档扫描。
投播组件Picker
使用投播组件Picker,可用于将音视频资源投放到其它设备播放。
使用方式请参考:投播组件。
