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

2024-05-27

图像选择器包说

无需配置 - 该插件应该开箱即用。

不再需要添加 android:requestLegacyExternalStorage="true" 作为属性 AndroidManifest.xml 中的标记,如 image_picker 所示 更新以利用范围存储。

从图库中读取图像。 所以我想我需要征求用户的一些许可,因为 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 https://pub.dev/packages/image_picker

上述库不会将图像保存在外部存储中。

注意:使用相机拍摄的图像和视频将保存到您的 应用程序的本地缓存,因此应该只 暂时周围。如果您需要存储您选择的图像 永久,您有责任将其移至更永久的位置 地点。

欲了解更多信息,您可以参考此链接
https://guides.codepath.com/android/Accessing-the-Camera-and-Stored-Media#accessing-stored-media https://guides.codepath.com/android/Accessing-the-Camera-and-Stored-Media#accessing-stored-media

Update :内部如何处理图像拾取image_picker适用于安卓

对于画廊选择它在内置文件选择器意图中打开,使用ACTION_GET_CONTENT(关于操作 获取内容 https://developer.android.com/reference/android/content/Intent#ACTION_GET_CONTENT)

使用打开文件时ACTION_GET_CONTENT- 由于用户参与选择您的应用程序可以访问的文件或目录,因此此机制不需要任何系统权限。您可以阅读更多有关何时需要许可以及何时不在 Google 文档中 https://developer.android.com/training/data-storage/shared/documents-files

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 页面上 -图像选择器代码 https://github.com/flutter/plugins/tree/master/packages/image_picker/image_picker

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flutter 图像选择器明确请求许可 的相关文章