
华为仓颉鸿蒙HarmonyOS NEXT仓颉原生文件选择器ohos.file.picker
选择器(Picker)是一个封装PhotoViewPicker、DocumentViewPicker、AudioViewPicker等API模块,具有选择与保存的能力。应用可以自行选择使用哪种API实现文件选择和文件保存的功能。该类接口,需要应用在界面UIAbility中调用,否则无法拉起photoPicker应用或FilePicker应用。👇🏻👇🏻👇🏻求关注👇🏻👇🏻👇🏻。
选择器(Picker)是一个封装PhotoViewPicker、DocumentViewPicker、AudioViewPicker等API模块,具有选择与保存的能力。应用可以自行选择使用哪种API实现文件选择和文件保存的功能。该类接口,需要应用在界面UIAbility中调用,否则无法拉起photoPicker应用或FilePicker应用。
👇🏻👇🏻👇🏻求关注👇🏻👇🏻👇🏻
导入模块
import ohos.file_picker.*
var globalAbilityContext: Option<AbilityContext> = Option<AbilityContext>.None
class MainAbility <: Ability {
public init() {
super()
registerSelf()
}
public override func onCreate(want: Want, launchParam: LaunchParam): Unit {
AppLog.info("MainAbility OnCreated.")
globalAbilityContext = Option<AbilityContext>.Some(this.context)
}
public override func onWindowStageCreate(windowStage: WindowStage): Unit {
AppLog.info("MainAbility onWindowStageCreate.")
windowStage.loadContent("MyView")
}
}
func createAbility(): MainAbility {
MainAbility()
}
let ABILITY_REGISTER_RESULT = Ability.registerCreator("CangjieAbility", createAbility)
func getContext(): AbilityContext {
match (globalAbilityContext) {
case Some(context) =>
context
case _ =>
throw Exception("get globalAbilityContext failed")
}
}
class PhotoViewPicker
public class PhotoViewPicker {
public PhotoViewPicker(let abilityContext: AbilityContext) {}
}
图库选择器对象,用来支撑选择图片/视频和保存图片/视频等用户场景。选择文件推荐使用PhotoAccessHelper的PhotoViewPicker。在使用前,需要先通过AbilityContext创建PhotoViewPicker实例。
系统能力:SystemCapability.FileManagement.UserFileService
示例:
let actualContext: AbilityContext = getContext()
let photoPicker = PhotoViewPicker(actualContext)
func select(AsyncCallback,Option)
public func select(callback: AsyncCallback<PhotoSelectResult>, option!: PhotoSelectOptions = PhotoSelectOptions()): Unit
通过选择模式拉起photoPicker界面,用户可以选择一个或多个图片/视频。接口采用callback异步返回形式,传入参数PhotoSelectOptions对象,返回PhotoSelectResult对象。
注意:此接口返回的PhotoSelectResult对象中的photoUris只能通过临时授权的方式调用photoAccessHelper.getAssets接口去使用,具体使用方式参见用户文件URI介绍中的媒体文件URI的使用方式。
系统能力:SystemCapability.FileManagement.UserFileService
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
callback | AsyncCallback | 是 | callback 返回photoPicker选择后的结果集。 |
option | PhotoSelectOptions | 否 | photoPicker选择选项。 |
示例:
import ohos.file_picker.*
let actualContext: AbilityContext = getContext()
let picker = PhotoViewPicker(actualContext)
let option = PhotoSelectOptions(MIMEType: VIDEO_TYPE, maxSelectNumber: 20)
let photoResultCallback = {
errorCode: Option<AsyncError>, data: Option<PhotoSelectResult> => match (errorCode) {
case Some(e) =>
AppLog.info("photo select error: errcode is ${e.code}")
case _ =>
match (data) {
case Some(value) =>
AppLog.info("photoUris is ${value.photoUris}")
AppLog.info("isOriginalPhoto is ${value.isOriginalPhoto}")
case _ => AppLog.info("photo select error: data is null")
}
}
}
picker.select(photoResultCallback, option: option)
func save(AsyncCallback, Option)
public func save(callback: AsyncCallback<Array<String>>, option!: PhotoSaveOptions = PhotoSaveOptions()): Unit
通过保存模式拉起photoPicker界面,用户可以保存一个或多个图片/视频。接口采用callback异步返回形式,传入参数PhotoSaveOptions对象,返回保存文件的URI数组。
注意:此接口会将文件保存在文件管理器,而不是图库。返回的URI数组的具体使用方式参见用户文件URI介绍中的文档类URI的使用方式。
系统能力:SystemCapability.FileManagement.UserFileService
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
callback | AsyncCallback<Array> | 是 | callback 返回photoPicker保存图片或视频文件后的结果集。 |
option | PhotoSaveOptions | 否 | photoPicker保存图片或视频文件选项。 |
示例:
import ohos.file_picker.*
let actualContext: AbilityContext = getContext()
let picker = PhotoViewPicker(actualContext)
let option = PhotoSaveOptions(newFileNames: Array<String>(["PhotoViewPicker.jpg", "PhotoViewPicker.mp4"]))
let saveCallback = {
errorCode: Option<AsyncError>, data: Option<Array<String>> => match (errorCode) {
case Some(e) =>
AppLog.info("photo save error: errcode is ${e.code}")
case _ =>
match (data) {
case Some(value) =>
AppLog.info("photoUris is ${value}")
case _ => AppLog.info("photo save error: data is null")
}
}
}
picker.save(saveCallback, option: option)
class DocumentViewPicker
public class DocumentViewPicker {
public DocumentViewPicker(let abilityContext: AbilityContext) {}
}
文件选择器对象,用来支撑选择和保存各种格式文档。在使用前,需要先创建DocumentViewPicker实例。
系统能力:SystemCapability.FileManagement.UserFileService
示例:
let actualContext: AbilityContext = getContext()
let documentPicker = DocumentViewPicker(actualContext)
func select(AsyncCallback, Option)
public func select(callback: AsyncCallback<Array<String>>, option!: DocumentSelectOptions = DocumentSelectOptions()): Unit
通过选择模式拉起documentPicker界面,用户可以选择一个或多个文件。接口采用callback异步返回形式,传入参数DocumentSelectOptions对象,返回选择文件的URI数组。
注意:此接口返回的URI数组的具体使用方式参见用户文件URI介绍中的文档类URI的使用方式。
系统能力:SystemCapability.FileManagement.UserFileService
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
callback | AsyncCallback<Array> | 是 | callback 返回documentPicker选择后的结果集。 |
option | DocumentSelectOptions | 否 | documentPicker选择选项。 |
示例:
import ohos.file_picker.*
let actualContext: AbilityContext = getContext()
let picker = DocumentViewPicker(actualContext)
let option = DocumentSelectOptions(selectMode: DocumentSelectMode.MIXED)
let documentSelectCallback = {
errorCode: Option<AsyncError>, data: Option<Array<String>> => match (errorCode) {
case Some(e) =>
AppLog.info("document select error: errcode is ${e.code}")
case _ =>
match (data) {
case Some(value) =>
AppLog.info("documentUris is ${value}")
case _ => AppLog.info("document select error: data is null")
}
}
}
picker.select(documentSelectCallback, option: option)
func save(AsyncCallback<Array>, Option)
public func save(callback: AsyncCallback<Array<String>>, option!: DocumentSaveOptions = DocumentSaveOptions()): Unit
通过保存模式拉起documentPicker界面,用户可以保存一个或多个文件。接口采用callback异步返回形式,传入参数DocumentSaveOptions对象,返回保存文件的URI数组。
注意:此接口返回的URI数组的具体使用方式参见用户文件URI介绍中的文档类URI的使用方式。
系统能力:SystemCapability.FileManagement.UserFileService
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
callback | AsyncCallback<Array> | 是 | callback 返回documentPicker保存后的结果集。 |
option | DocumentSaveOptions | 否 | documentPicker保存选项。 |
示例:
import ohos.file_picker.*
let actualContext: AbilityContext = getContext()
let picker = DocumentViewPicker(actualContext)
let option = DocumentSaveOptions(newFileNames: Array<String>(["DocumentViewPicker.txt"]))
let saveCallback = {
errorCode: Option<AsyncError>, data: Option<Array<String>> => match (errorCode) {
case Some(e) =>
AppLog.info("document save error: errcode is ${e.code}")
case _ =>
match (data) {
case Some(value) =>
AppLog.info("documentUris is ${value}")
case _ => AppLog.info("document save error: data is null")
}
}
}
picker.save(saveCallback, option: option)
class AudioViewPicker
public class AudioViewPicker {
public AudioViewPicker(let abilityContext: AbilityContext)
}
音频选择器对象,用来支撑选择和保存音频类文件等用户场景。在使用前,需要先创建AudioViewPicker实例。
系统能力:SystemCapability.FileManagement.UserFileService
示例:
let actualContext: AbilityContext = getContext()
let picker = AudioViewPicker(actualContext)
func select(AsyncCallback<Array>, Option)
public func select(callback: AsyncCallback<Array<String>>, option!: AudioSelectOptions = AudioSelectOptions()): Unit
通过选择模式拉起audioPicker界面(目前拉起的是documentPicker,audioPicker在规划中),用户可以选择一个或多个音频文件。接口采用callback异步返回形式,传入参数AudioSelectOptions对象,返回选择音频文件的URI数组。
注意:此接口返回的URI数组的具体使用方式参见用户文件URI介绍中的文档类URI的使用方式。
系统能力:SystemCapability.FileManagement.UserFileService
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
callback | AsyncCallback<Array> | 是 | callback 返回audioPicker选择音频后的结果集。 |
option | AudioSelectOptions | 否 | audioPicker音频选择选项。 |
示例:
import ohos.file_picker.*
let actualContext: AbilityContext = getContext()
let picker = AudioViewPicker(actualContext)
let audioSelectCallback = {
errorCode: Option<AsyncError>, data: Option<Array<String>> => match (errorCode) {
case Some(e) =>
AppLog.info("audio select error: errcode is ${e.code}")
case _ =>
match (data) {
case Some(value) =>
AppLog.info("audioUris is ${value}")
case _ => AppLog.info("audio select error: data is null")
}
}
}
picker.select(audioSelectCallback, option: AudioSelectOptions())
func save(AsyncCallback<Array>, Option)
public func save(callback: AsyncCallback<Array<String>>, option!: AudioSaveOptions = AudioSaveOptions()): Unit
通过保存模式拉起audioPicker界面(目前拉起的是documentPicker,audioPicker在规划中),用户可以保存一个或多个音频文件。接口采用callback异步返回形式,传入参数AudioSaveOptions对象,返回保存音频文件的URI数组。
注意:此接口返回的URI数组的具体使用方式参见用户文件URI介绍中的文档类URI的使用方式。
系统能力:SystemCapability.FileManagement.UserFileService
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
callback | AsyncCallback<Array> | 是 | callback 返回audioPicker保存音频文件后的结果集。 |
option | AudioSaveOptions | 否 | audioPicker保存音频文件选项。 |
示例:
import ohos.file_picker.*
let actualContext: AbilityContext = getContext()
let picker = AudioViewPicker(actualContext)
let option = AudioSaveOptions(newFileNames: Array<String>(["YourHairLikeSnow.mp3"]))
let saveCallback = {
errorCode: Option<AsyncError>, data: Option<Array<String>> => match (errorCode) {
case Some(e) =>
AppLog.info("audio save error: errcode is ${e.code}")
case _ =>
match (data) {
case Some(value) =>
AppLog.info("audioUris is ${value}")
case _ => AppLog.info("audio save error: data is null")
}
}
}
picker.save(saveCallback, option: option)
enum PhotoViewMIMETypes
public enum PhotoViewMIMETypes {
| IMAGE_TYPE
| VIDEO_TYPE
| IMAGE_VIDEO_TYPE
}
枚举,可选择的媒体文件类型。
系统能力:SystemCapability.FileManagement.UserFileService
名称 | 说明 |
---|---|
IMAGE_TYPE | 图片类型 |
VIDEO_TYPE | 视频类型 |
IMAGE_VIDEO_TYPE | 图片和视频类型 |
struct PhotoSelectOptions
public struct PhotoSelectOptions {
public PhotoSelectOptions (
public var MIMEType!: PhotoViewMIMETypes = IMAGE_VIDEO_TYPE,
public var maxSelectNumber!: Int64 = 50
)
}
图库选择选项。
系统能力:SystemCapability.FileManagement.UserFileService
名称 | 类型 | 必填 | 说明 |
---|---|---|---|
MIMEType | PhotoViewMIMETypes | 否 | 可选择的媒体文件类型,若无此参数,则默认为图片和视频类型。 |
maxSelectNumber | Int64 | 否 | 选择媒体文件数量的最大值(默认值为50,最大值为500。如果传入参数小于等于0,则取默认值;如果传入参数大于最大值,则取最大值)。 |
struct PhotoSelectResult
public struct PhotoSelectResult {
public PhotoSelectResult (
public var photoUris: Array<String>,
public var isOriginalPhoto: Bool
)
}
返回图库选择后的结果集。
系统能力:SystemCapability.FileManagement.UserFileService
名称 | 类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
photoUris | Array | 是 | 是 | 返回图库选择后的媒体文件的URI数组,此URI数组只能通过临时授权的方式调用photoAccessHelper.getAssets接口去使用,具体使用方式参见用户文件URI介绍中的媒体文件URI的使用方式。 |
isOriginalPhoto | Bool | 是 | 是 | 返回图库选择后的媒体文件是否为原图。 |
struct PhotoSaveOptions
public struct PhotoSaveOptions {
public PhotoSaveOptions (
public var newFileNames!: Array<String> = Array<String>()
)
}
图片或视频的保存选项。
系统能力:SystemCapability.FileManagement.UserFileService
名称 | 类型 | 必填 | 说明 |
---|---|---|---|
newFileNames | Array | 否 | 拉起photoPicker进行保存图片或视频资源的文件名,若无此参数,则默认需要用户自行输入。 |
struct DocumentSelectOptions
public struct DocumentSelectOptions {
public DocumentSelectOptions (
public var maxSelectNumber!: ?Int64 = None,
public var defaultFilePathUri!: ?String = None,
public var fileSuffixFilters!: Array<String> = Array<String>(),
public var selectMode!: DocumentSelectMode = FILE
)
}
文档选择选项。
系统能力:SystemCapability.FileManagement.UserFileService
名称 | 类型 | 必填 | 说明 |
---|---|---|---|
maxSelectNumber | Int64 | 否 | 选择文件最大个数,默认值和上限都是500,有效值范围1-500(输入有效值之外的数采用默认值。选择目录仅支持特定设备)。 |
defaultFilePathUri | String | 否 | 指定选择的文件或者目录路径。 |
fileSuffixFilters | Array | 否 | 选择文件的后缀类型,若选择项存在多个后缀名,则每一个后缀名之间用英文逗号进行分隔。 |
selectMode | DocumentSelectMode | 否 | 支持选择的资源类型,比如:文件、文件夹和二者混合,仅支持特定设备。系统能力: |
enum DocumentSelectMode
public enum DocumentSelectMode {
| FILE
| FOLDER
| MIXED
}
枚举,picker选择的文档类型。
系统能力:SystemCapability.FileManagement.UserFileService.FolderSelection
名称 | 说明 |
---|---|
FILE | 文件类型 |
FOLDER | 文件夹类型 |
MIXED | 文件和文件夹混合类型 |
struct DocumentSaveOptions
public struct DocumentSaveOptions {
public DocumentSaveOptions (
public var newFileNames!: Array<String> = Array<String>(),
public var defaultFilePathUri!: ?String = None,
public var fileSuffixChoices!: Array<String> = Array<String>()
)
}
文档保存选项。
系统能力:SystemCapability.FileManagement.UserFileService
名称 | 类型 | 必填 | 说明 |
---|---|---|---|
newFileNames | Array | 否 | 拉起documentPicker进行保存的文件名,若无此参数,则默认需要用户自行输入。 |
defaultFilePathUri | String | 否 | 指定保存的文件或者目录路径。 |
fileSuffixChoices | Array | 否 | 保存文件的后缀类型。 |
struct AudioSelectOptions
public struct AudioSelectOptions {
public AudioSelectOptions()
}
音频选择选项,目前不支持参数配置。
系统能力:SystemCapability.FileManagement.UserFileService
struct AudioSaveOptions
public struct AudioSaveOptions {
public AudioSaveOptions (
public var newFileNames!: Array<String> = Array<String>()
)
}
音频的保存选项。
系统能力:SystemCapability.FileManagement.UserFileService
名称 | 类型 | 必填 | 说明 |
---|---|---|---|
newFileNames | Array | 否 | 拉起audioPicker进行保存音频资源的文件名,若无此参数,则默认需要用户自行输入。 |
如对您有帮助,帮忙点个“在看 、关注” 让更多的人受益~!
技术交流群可加wx“LB-9191”备注cangjie
更多推荐
所有评论(0)