gpt4 book ai didi

android - Flutter 图像选择器明确请求许可

转载 作者:行者123 更新时间:2023-12-04 23:41:50 24 4
gpt4 key购买 nike

Imagepicker 包说

No configuration required - the plugin should work out of the box.

It is no longer required to addandroid:requestLegacyExternalStorage="true" as an attribute to the tag in AndroidManifest.xml, as image_picker has beenupdated to make use of scoped storage.


从图库中读取图像。
所以我想我需要征求用户的一些许可,因为 Playstore 也这么说
新包只是工作,不要求任何许可。
我需要明确询问哪些权限
而且我不想将其保存在任何外部目录中,我只想将图像上传到 Firebase 存储
编辑:图像选择器没有征求用户的任何许可这是错误的

最佳答案

在android中读写文件所需的权限是。
需要将这些权限添加到您的 AndroidManifest.xml

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
在您的场景中,您不需要做任何事情,因为这已经由库 处理。
https://pub.dev/packages/image_picker
上述库不会将图像保存在外部存储中。

Note: Images and videos picked using the camera are saved to yourapplication's local cache, and should therefore be expected to only bearound temporarily. If you require your picked image to be storedpermanently, it is your responsibility to move it to a more permanentlocation.


有关更多信息,您可以引用此链接
https://guides.codepath.com/android/Accessing-the-Camera-and-Stored-Media#accessing-stored-media
更新: image_picker 内部如何处理图像拾取安卓版
画廊 使用 ACTION_GET_CONTENT 在内置文件选择器 Intent 中打开它( about action get content)
使用 ACTION_GET_CONTENT 打开文件时- 因为用户参与选择您的应用程序可以访问的文件或目录,所以这种机制不需要任何系统权限。您可以阅读有关 when permission is needed and when not in google docs 的更多信息
Intent pickImageIntent = new Intent(Intent.ACTION_GET_CONTENT);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
pickImageIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
}
pickImageIntent.setType("image/*");

activity.startActivityForResult(pickImageIntent, REQUEST_CODE_CHOOSE_MULTI_IMAGE_FROM_GALLERY);
并将结果 URI 复制到缓存目录中的临时文件中并返回路径
     String extension = getImageExtension(context, uri);
inputStream = context.getContentResolver().openInputStream(uri);
file = File.createTempFile("image_picker", extension, context.getCacheDir());
file.deleteOnExit();
outputStream = new FileOutputStream(file);
if (inputStream != null) {
copy(inputStream, outputStream);
success = true;
}

相机用 库请求相机权限 android.permission.CAMERA来自用户并将相机图像保存在应用缓存目录中。
private void handleCaptureImageResult(int resultCode) {
if (resultCode == Activity.RESULT_OK) {
fileUriResolver.getFullImagePath(
pendingCameraMediaUri != null
? pendingCameraMediaUri
: Uri.parse(cache.retrievePendingCameraMediaUriPath()),
new OnPathReadyListener() {
@Override
public void onPathReady(String path) {
handleImageResult(path, true);
}
});
return;
}

// User cancelled taking a picture.
finishWithSuccess(null);
}
此代码根据版本 image_picker: ^0.8.4+4他们的 github 页面上的代码 - image picker code

关于android - Flutter 图像选择器明确请求许可,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69014145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com