gpt4 book ai didi

android - 图像文件从本地存储到 ImageView - android 10 存储权限问题

转载 作者:行者123 更新时间:2023-12-03 23:10:03 25 4
gpt4 key购买 nike

不确定我在哪里出错,但我已尽一切努力让图像显示在 ImageView 中一旦用户在图像选择器中选择了一个图像,但 让我们把图像选择器放在一边我什至无法通过直接提供 FullPath 来显示图像,如下面的代码(也没有出现任何错误)

尝试 1 - 位图

string IMGpath = "/storage/emulated/0/DCIM/Camera/IMG_20151102_193132.jpg"
var imgFile = new File(IMGpath);
if (imgFile.Exists())
{
Bitmap bitmap = BitmapFactory.DecodeFile(imgFile.AbsolutePath);
_imageview.SetImageBitmap(bitmap);
}
else
{
Log.Info("AAABL", "No file");
}

尝试 2 - 带有选项的位图
string IMGpath = "/storage/emulated/0/DCIM/Camera/IMG_20151102_193132.jpg"
var imgFile = new File(IMGpath);
if (imgFile.Exists())
{
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
Bitmap bitmap = BitmapFactory.DecodeFile(imgFile.AbsolutePath, bmOptions);
bitmap = Bitmap.CreateScaledBitmap(bitmap, 200,200, true);
_imageview.SetImageBitmap(bitmap);
}
else
{
Log.Info("AAABL", "No file");
}

尝试 3 - 自定义库
另外,我尝试使用 a Library如下
string IMGpath = "/storage/emulated/0/DCIM/Camera/IMG_20151102_193132.jpg"
var imgFile = new File(IMGpath);
if (imgFile.Exists())
{
var a = ImageService.Instance.LoadFile(imgFile.AbsolutePath)
.Retry(3, 200)
.Into(_imageview);
}
else
{
Log.Info("AAABL", "No file");
}

尝试 4 - URI
string IMGpath = "/storage/emulated/0/DCIM/Camera/IMG_20151102_193132.jpg"
Android.Net.Uri URI = Android.Net.Uri.Parse(IMGpath );
_imageview.SetImageURI(URI );

无论我做什么,我都无法加载图像。我有以下 list 中的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

并检查 Activity 权限 OnCreate确保应用程序具有完全存储权限的方法如下
if ((ContextCompat.CheckSelfPermission(this, Manifest.Permission.ReadExternalStorage) != (int)Permission.Granted) && (ContextCompat.CheckSelfPermission(this, Manifest.Permission.WriteExternalStorage) != (int)Permission.Granted))
{
ActivityCompat.RequestPermissions(this, new String[] { Manifest.Permission.ReadExternalStorage, Manifest.Permission.WriteExternalStorage }, 0);
}

这只发生在 Android 10 (API 29) 中,相同的代码在 API 28 之前都可以正常工作。

这是一个灵魂粉碎机,一整天我都想不通,知道吗?

更新 ::
尝试打开文件时出现以下错误

open failed: EACCES (Permission denied)

最佳答案

我遇到了同样的问题并找到了你的帖子,然后在这里为你找到了一个潜在的解决方案:https://github.com/bumptech/glide/issues/3896#issuecomment-533062076

只需将其添加到 list 的应用程序标记中。它在 10 上为我解决了这个问题:

android:requestLegacyExternalStorage="true"

关于android - 图像文件从本地存储到 ImageView - android 10 存储权限问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59151677/

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