HarmonyOS 鸿蒙Next文件选择器如何调用?
HarmonyOS 鸿蒙Next文件选择器如何调用? 官方文档“选择文件与路径”中有提到
为给用户提供一致的文件操作体验,避免各应用提供各式各样的文件调用操作界面,降低由此带来的用户学习成本,HarmonyOS 提供了系统级的文件操作解决方案,在不同的使用场景中,用户都能够使用熟悉的界面完成打开、查找、保存文件等任务。如无特殊需求,应用应优先考虑调用系统能力,而不是重新实现相同的功能。
https://developer.harmonyos.com/cn/docs/design/des-guides/fileoperation-0000001110501588
请问以上功能如何实现,有没有对应的smaple可以参考,谢谢!
更多关于HarmonyOS 鸿蒙Next文件选择器如何调用?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
JS和Java都可以,但JS是新特性,要API Version6以上,我手机为mate30pro只支持到Version5,为了能用上把java的也学了一下,大体就下面这样,申请权限,设置文件类型等地方都很重要,和我一样的小白学一下吧,我也是试错、翻资料了3、4天才弄出来,页面布局我就不粘了,随便放个按钮、image组件就行了。
public class MainAbilitySlice extends AbilitySlice {
private final int imgRequestCode=1123;
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_main);
requestPermissionsFromUser(new String[]{"ohos.permission.READ_USER_STORAGE"},imgRequestCode);
//申请权限
Component button=findComponentById(ResourceTable.Id_mybutton);
button.setClickedListener(new Component.ClickedListener() {
@Override
public void onClick(Component component) {
Intent intent=new Intent();
Operation operation=new Intent.OperationBuilder()
.withAction("android.intent.action.GET_CONTENT")
.build();
//除了这个还可以用IntentConstance.ACTION_CHOOSE
intent.setOperation(operation);
intent.setType("application/*");
//用IntentConstance时,类型经测试不支持application,但支持"image","video"等具体格式
intent.addFlags(Intent.FLAG_NOT_OHOS_COMPONENT);
startAbilityForResult(intent,imgRequestCode);
}
});
}
@Override
protected void onAbilityResult(int requestCode, int resultCode, Intent resultData) {
super.onAbilityResult(requestCode, resultCode, resultData);
Image image=(Image)findComponentById(ResourceTable.Id_image_show) ;
Uri result = resultData.getUri();
DataAbilityHelper dp = DataAbilityHelper.creator(getContext());
FileDescriptor fddd = new FileDescriptor();
try {
fddd=dp.openFile(result, "r");
FileInputStream fileInputStream = new FileInputStream(fddd);
ImageSource imageSource=ImageSource.create(fileInputStream,null);
PixelMap pixelMap=imageSource.createPixelmap(null);
image.setPixelMap(pixelMap);
}catch (Exception e){
}finally {
return;
}
}
@Override
public void onActive() {
super.onActive();
}
@Override
public void onForeground(Intent intent) {
super.onForeground(intent);
}
}
哦!对了,经测试mate30pro鸿蒙2.0能用哦
更多关于HarmonyOS 鸿蒙Next文件选择器如何调用?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
历时7天,翻了十几个帖子,终于找到解决办法了,我太难了。。。
开发者你好,文件选择器是手机/折叠屏/平板的系统特性暂时没有代码样例
关注,我也想知道
欢迎开发小伙伴们进来帮帮楼主
在HarmonyOS鸿蒙Next中,调用文件选择器可以通过FilePicker
API实现。首先,确保在build.gradle
中添加相关依赖。然后,使用FilePicker
类创建实例,并配置选择类型(如图片、视频等)。通过startActivityForResult
启动文件选择器,并在onActivityResult
中处理用户选择的文件路径。具体代码如下:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, REQUEST_CODE);
在onActivityResult
中获取文件路径并处理。