获取Xamarin图库图像的路径?

2023-12-01

我正在尝试获取图库图像的路径。我正在获取存储在内部存储中但不是外部存储中的图像的路径。我还启用了已授予的读写存储和相机访问权限。 这是我的代码

    void ChoosePhoto()
    {
        try
        {
            var imageIntent = new Intent();
            imageIntent.SetType("image/*");
            imageIntent.SetAction(Intent.ActionGetContent);
            StartActivityForResult(Intent.CreateChooser(imageIntent, "Select photo"), 0);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    } 

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
    {
        base.OnActivityResult(requestCode, resultCode, data);

        if (requestCode == CAMERA_CAPTURE)
        {
        // camera operation
        }
        else
        {
            Console.WriteLine("choose pic from Gallery");
            var uri = data.Data;
            var path = getRealPathFromURI(uri); //path returns null when i select image from external storage;
        }
    }
    private String getRealPathFromURI(Uri contentURI)
    {
        string[] proj = { MediaStore.Images.ImageColumns.Data };
        String result;
        var cursor = ContentResolver.Query(contentURI, proj, null, null, null);
        if (cursor == null)
            result = contentURI.Path;
        else
        {
            int idx= cursor.GetColumnIndex(MediaStore.Images.ImageColumns.Data);
            cursor.MoveToFirst();
            result = cursor.GetString(idx);
            cursor.Close();
        }
        return result;
    }

我想获取我从图库中选择的图像路径

问题是改变Android.Net.Uri to path,这是一个解决方案:

private string GetPathToImage(Android.Net.Uri uri)
{
    string doc_id = "";
    using (var c1 = ContentResolver.Query(uri, null, null, null, null))
    {
        c1.MoveToFirst();
        string document_id = c1.GetString(0);
        doc_id = document_id.Substring(document_id.LastIndexOf(":") + 1);
    }

    string path = null;

    // The projection contains the columns we want to return in our query.
    string selection = Android.Provider.MediaStore.Images.Media.InterfaceConsts.Id + " =? ";
    using (var cursor = ContentResolver.Query(Android.Provider.MediaStore.Images.Media.ExternalContentUri, null, selection, new string[] { doc_id }, null))
    {
        if (cursor == null) return path;
        var columnIndex = cursor.GetColumnIndexOrThrow(Android.Provider.MediaStore.Images.Media.InterfaceConsts.Data);
        cursor.MoveToFirst();
        path = cursor.GetString(columnIndex);
    }
    return path;
}

当您从图库中选择图片时:

ChoosePhoto();
...
 protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
    base.OnActivityResult(requestCode, resultCode, data);
    if (requestCode == 0)
    {
        var uri = data.Data;
        var path = GetPathToImage(uri);
        System.Diagnostics.Debug.WriteLine("Image path == " + path );
        //My result is this ==> [0:] Image path == /storage/emulated/0/DCIM/Camera/IMG_20170813_223324.jpg
    }
 }

最重要的,当你使用这个方法的时候,也许你会遇到这样的问题:

Java.Lang.SecurityException:权限拒绝:从 pid=21975、uid=10417 读取 com.android.providers.media.MediaProvider uri content://media/external/images/media 需要 android.permission.READ_EXTERNAL_STORAGE 或 grantUriPermission()

当 API >= 23 时,在运行时请求权限,用户在应用程序运行时而不是在安装应用程序时向应用程序授予权限。你应该检查一下你是否有android.permission.READ_EXTERNAL_STORAGE权限,如果没有,则需要请求权限。

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

获取Xamarin图库图像的路径? 的相关文章

  • 如何重试已消耗的 Observable?

    我正在尝试重新执行失败的已定义可观察对象 一起使用 Retrofit2 和 RxJava2 我想在单击按钮时重试特定请求及其订阅和行为 那可能吗 service excecuteLoginService url tokenModel Ret
  • Android 30+ 中的视频捕获意图 - 只有所有者才能与待处理项目交互

    我正在尝试在我的应用程序上捕获视频 它可以在 android API 30 以下运行 但不能在 30 以上运行 似乎在 sdk 30 之后 android 不允许完全读取外部存储 作用域存储 我目前遇到这个错误 java lang Ille
  • 无法获取log.d或输出Robolectrict + gradle

    有没有人能够将 System out 或 Log d 跟踪从 robolectric 测试输出到 gradle 控制台 我在用Robolectric Gradle 测试插件 https github com robolectric robo
  • 如何在android中获取Camera2 API的当前曝光

    In android hardware Camera旧的 我使用下面的代码获取当前曝光并获取它Camera Camera Parameters param mCamera getParameters currentExposure para
  • Android 模拟器插件无法初始化后端 EGL 显示

    我在 Cloudbees 上设置了 Jenkins 作业 并且可以在那里成功签出并编译我的 Android 项目 现在我想在 android 模拟器中运行一些 JUnit 测试并添加 Android 模拟器插件 我将 显示模拟器窗口 选项设
  • Android 中 Kotlin 协程的正确使用方式

    我正在尝试使用异步更新适配器内的列表 我可以看到有太多的样板 这是使用 Kotlin 协程的正确方法吗 这个可以进一步优化吗 fun loadListOfMediaInAsync async CommonPool try Long runn
  • CollapsingToolBarLayout - 状态栏稀松布颜色不改变

    几天前我更新了我的 android studio 并开始使用 CoordinatorLayout 和 CollapsingToolbarLayout 只是尝试一些东西 工具栏稀松布颜色似乎覆盖了状态栏初始颜色和状态栏稀松布颜色 从 xml
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • Android SIP 来电使用带有广播接收器的服务

    大家好 其实我正在尝试创建一个应用程序 支持基于 SIP 通过互联网进行音频呼叫 这里使用本机 sip 我遇到了来电问题 我已经完成了服务的注册部分 但是在接听电话时我无法接听电话 请帮助我 Service file package exa
  • 无法访问 com.google.android.gms.internal.zzbfm 的 zzbfm 类文件未找到

    我正在将我的 Android 应用程序项目从GCM to FCM 为此 我使用 Android Studio 中的 Firebase 助手工具 并遵循 Google 开发人员指南中的说明 一切都很顺利 并将我的应用程序代码更改为FCM根据助
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • 尝试在 ubuntu 中编译 android 内核时出错

    我正在尝试从源代码编译 Android 内核 并且我已经下载了所有正确的软件包来执行此操作 但由于某种原因我收到此错误 arm linux androideabi gcc error unrecognized command line op
  • 在 android DatePickerDialog 中将语言设置为法语

    有什么办法可以让日期显示在DatePickerDialog用法语 我已经搜索过这个但没有找到结果 这是我的代码 Calendar c Calendar getInstance picker new DatePickerDialog Paym
  • 错误:在根项目“projectName”中找不到项目“app”

    我有一个在 Eclipse 中开发的旧应用程序 现在尝试将其迁移到 Android Studio 我更新了库并遵循了基本步骤 现在 我收到此错误 Error Project app not found in root project pro
  • Android访问远程SQL数据库

    我可以直接从 Android 程序访问远程 SQL 数据库 在网络服务器上 吗 即简单地打开包含所有必需参数的连接 然后执行 SQL 查询 这是一个私人程序 不对公众开放 仅在指定的手机上可用 因此我不担心第三方获得数据库访问权限 如果是这
  • Android Studio - Windows 7 上的 Android SDK 问题

    我对 Google i o 2013 上发布的最新开发工具 Android Studio 有疑问 我已经成功安装了该程序并且能够正常启动 我可以导入现有项目并对其进行编辑 但是 当我尝试单击 SDK 管理器图标或 AVD 管理器图标时 或者
  • 我的设备突然没有显示在“Android 设备选择器”中

    我正在使用我的三星 Galaxy3 设备来测试过去两个月的应用程序 它运行良好 但从今天早上开始 当我将设备连接到系统时 它突然没有显示在 Android 设备选择器 窗口中 我检查过 USB 调试模式仅在我的设备中处于选中状态 谁能猜出问
  • 如何确定对手机号码的呼叫是本地呼叫还是 STD 或 ISD

    我正在为 Android 开发某种应用程序 但不知道如何获取被叫号码是本地或 STD 的号码的数据 即手机号码检查器等应用程序从哪里获取数据 注意 我说的是手机号码 而不是固定电话 固定电话号码 你得到的数字是字符串类型 因此 您可以获取号
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 强制 Listview 不重复使用视图(复选框)

    我做了一个定制Listview 没有覆盖getView 方法 Listview 中的每个项目都具有以下布局 联系布局 xml

随机推荐

  • UpdatePanel异步回发后的Javascript事件订阅

    我在 asp net 页面上异步回发后遇到 jquery 事件处理程序问题 我读这个话题 这是一个很好的解决方案 但我需要一个单独的函数 所以我正在使用jquery 屏蔽插件 我现在的js代码是
  • 检查表的时间重叠?

    我有一个包含以下字段的 MySQL 表 name 开始时间 endtime starttime and endtime是 MySQLTIME字段 不DATETIME 我需要一种方法来定期 扫描 表以查看表内的时间范围是否有重叠 如果有一个事
  • pip install mysqlclient 在 Ubuntu 上使用 docker 上的 python 2.7 失败

    当我运行下面的 docker 文件代码时 RUN apt get update apt get install y no install recommends ca certificates vim git python python pi
  • 在 pandas/matplotlib 中格式化时间序列 x 轴

    我想显示每个月份的缩写 以及年份的缩写 我很接近 我目前遇到的问题是年份不正确 我发现这是 numpy datetime64 日期时间索引采用这种格式 和使用 1970 纪元的 python datetime 之间的问题 图表上显示的两年应
  • 显示随机字符串

    我试图在每次按下 strings xml 中定义的一组字符串中的按钮时显示一个随机字符串 这是字符串 ID 的示例
  • linkedHashSet 中的有序插入,有什么高性能的方法吗?

    所以我有一个 LinkedHashSet 其值为 a1 a2 b c1 c2 我想用 x 替换 b 使得 x 的顺序应与 b 的顺序相同 一种明显的方法是 private LinkedHashSet
  • JavaScript Google Maps API 如何将位置纬度/经度存储到全局变量

    我是 JavaScript 新手 希望实现 Google 提供的代码 以便在您的位置放置标记 但是 我想获取位置数据并在 getCurrentPosition 块之外使用它 我的第一遍是实例化一个对象 其中纬度和经度作为块外部的属性 并将其
  • 在 Canvas 中使用 arc() 方法添加多余的线条

  • 是否可以将处理(java 3d)中的窗口附加到像面板一样的摆动单元中?

    我想将另一个窗口附加到现有的窗口中JFrame or JComponent或者什么 有什么办法可以做到吗 编辑 不 当我的意思是正如标题所说 攻击a加工 显示窗口 处理基本上是在 java 中使用 3d 进行操作并可视化 3d 窗口 每当运
  • 如何使用 JavaScript 获取整个文档的高度?

    有些文档我无法获取文档的高度 将某些内容绝对放置在最底部 此外 填充底部似乎在这些页面上没有任何作用 但在高度将返回的页面上起作用 相关案例 http fandango com http paperbackswap com 方丹戈jQuer
  • C# 使用 SMO 以编程方式创建数据库

    我正在尝试创建数据库 但创建后无法连接到它 服务器是Microsoft SQL Server 2008并使用 Net 4 5 我们使用 SMO 创建数据库 但我们通常使用Dapper连接并查询数据库 这是我到目前为止的代码 它有效 Syst
  • WebAPI OAuth 注销 - 如何删除令牌 Cookie?

    我有一个带有 OAuth 登录配置的 WebAPI 如下所示 app UseOpenIdConnectAuthentication new OpenIdConnectAuthenticationOptions ClientId client
  • 如何找到与正方形周长相交的 Voronoi 图的悬垂线的交点?

    我试图通过查找与定义的正方形周长相交的悬垂多边形线的交点来更新 Voronoi 的交点数组 我希望能够重新创建一个新的 Voronoi 交点数组 该数组应该用相交点替换那些悬垂点 下面是我为实验创建的一些代码 function grainn
  • 使用 iTextSharp 将图像转换为 PDF 并保留剪切路径

    我们希望以编程方式将图像批量转换为 PDF 到目前为止 我们似乎将使用 iTextSharp 但我们在使用剪切路径的 JPG 图像时遇到问题 我们在测试中使用以下代码 using FileStream fs new FileStream o
  • 删除 Postgresql 中连续的重复行

    我有一个包含 3 列 id 金额 时间 的表 该表根据id升序排列 我想删除除第一个之外在金额列中具有相同值的所有连续行 eg id 12 15 16 17 19 22 amount 555 546 546 53 53 500 time A
  • 通用Web表单的数据库设计

    我想构建一个通用网络表单的后端 其中包含用户可以回答的问题 问题有多种类型 普通 文本问题 通过简单的文本字段回答问题 Example 一般个人信息 例如姓名 文本区域问题 相同 但有更多空间来写答案 Example 您要添加的更多信息 框
  • 通过 Odoo 中的代码发送电子邮件时出错

    我创建了一个通过单击模块 linh warehoues 中的按钮 发送电子邮件 来发送电子邮件的函数 但出现以下错误 关系 mail thread 不存在 我实在不明白这是什么意思 我还检查了 mail thread py 中存在 mail
  • if 语句中的 getline

    从我读到的来看 getline 在布尔上下文中使用会返回隐式转换为void 我在网络上没有找到任何真正引用此声明的地方 它到处都说隐式转换不存在 并且在布尔上下文中指针应该是相同类型的 并且如果ptr 0 than 0转换为指针类型ptr
  • 检查嵌套字典内的成员资格

    这是此问题的后续问题 Python DictReader 跳过缺少列的行 事实证明我很愚蠢 并且使用了错误的 ID 字段 顺便说一句 我在这里使用的是 Python 3 x 我有一个员工字典 由字符串 directory id 索引 每个值
  • 获取Xamarin图库图像的路径?

    我正在尝试获取图库图像的路径 我正在获取存储在内部存储中但不是外部存储中的图像的路径 我还启用了已授予的读写存储和相机访问权限 这是我的代码 void ChoosePhoto try var imageIntent new Intent i