首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Xamarin Forms Android 10和更高版本通过文件名在公共外部存储中查找视频,并获取路径

Xamarin Forms是一种跨平台的移动应用开发框架,它允许开发人员使用C#语言和.NET平台来构建Android、iOS和Windows应用程序。在Xamarin Forms中,开发人员可以使用统一的代码库来创建具有原生用户界面的应用程序。

Android 10及更高版本引入了一些变化,特别是在访问外部存储的权限方面。在这些版本中,应用程序需要请求特定的权限才能访问公共外部存储中的文件。为了通过文件名在公共外部存储中查找视频并获取路径,您需要执行以下步骤:

  1. 添加权限:在AndroidManifest.xml文件中,确保您的应用程序具有访问外部存储的权限。您可以使用以下权限声明:
代码语言:txt
复制
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  1. 请求权限:在您的应用程序代码中,您需要请求访问外部存储的权限。您可以使用Android的权限请求机制来实现这一点。以下是一个示例代码片段:
代码语言:txt
复制
const int READ_EXTERNAL_STORAGE_REQUEST_CODE = 1;

if (ContextCompat.CheckSelfPermission(this, Manifest.Permission.ReadExternalStorage) != Permission.Granted)
{
    ActivityCompat.RequestPermissions(this, new string[] { Manifest.Permission.ReadExternalStorage }, READ_EXTERNAL_STORAGE_REQUEST_CODE);
}
  1. 处理权限请求结果:在您的应用程序中,您需要处理权限请求的结果。您可以通过重写Activity的OnRequestPermissionsResult方法来实现这一点。以下是一个示例代码片段:
代码语言:txt
复制
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Permission[] grantResults)
{
    if (requestCode == READ_EXTERNAL_STORAGE_REQUEST_CODE)
    {
        if (grantResults.Length > 0 && grantResults[0] == Permission.Granted)
        {
            // 权限已授予,可以访问外部存储
            // 在公共外部存储中查找视频并获取路径的代码
        }
        else
        {
            // 权限被拒绝,无法访问外部存储
            // 处理权限被拒绝的情况
        }
    }
}
  1. 在公共外部存储中查找视频并获取路径:一旦您的应用程序获得了访问外部存储的权限,您可以使用Android的文件系统API来查找视频并获取路径。以下是一个示例代码片段:
代码语言:txt
复制
Java.IO.File[] externalStorageDirs = Context.GetExternalFilesDirs(Android.OS.Environment.DirectoryMovies);
foreach (Java.IO.File dir in externalStorageDirs)
{
    if (dir != null && dir.Exists())
    {
        Java.IO.File[] files = dir.ListFiles();
        foreach (Java.IO.File file in files)
        {
            if (file.IsFile && file.Name.EndsWith(".mp4"))
            {
                string videoPath = file.AbsolutePath;
                // 处理视频路径
            }
        }
    }
}

在这个例子中,我们使用了Context.GetExternalFilesDirs方法来获取公共外部存储中的文件目录。然后,我们遍历目录中的文件,找到以".mp4"结尾的视频文件,并获取其绝对路径。

腾讯云提供了一系列与云计算相关的产品和服务,包括云存储、云服务器、人工智能等。您可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于这些产品和服务的信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

笔记 | Xamarin

引言 文件读写 参考: 使用 Xamarin.Android外部存储进行的文件访问 - Xamarin | Microsoft Docs Xamarin 的文件系统访问 - Xamarin | Microsoft...Docs 关于xamarin.forms Android创建文件与写文件 (ftp) - 懒猫口米 - 博客园 外部读写 应用可以在外部存储上保留两种不同类型的文件: 专用 文件 – 专用文件是特定于应用程序的文件...Android 期望专用文件存储外部存储上的特定目录。 尽管这些文件称为“专用”,但它们仍然可见,并且可由设备上的其他应用访问,Android 并没有对它们提供任何特殊保护。...所有 Android 应用都必须在 AndroidManifest.xml 外部存储声明两个权限之一。...版本自动更新(针对android) - sxsean - 博客园 XamarinAndroid获取当前版本号-Android-CSDN问答 C#使用Xamarin开发可移植移动应用终章(11.获取设备信息与常用组件

23.9K20

Xamarin 社区工具包的现状未来

它简化了使用 Xamarin.Forms 构建 iOS、Android、macOS、WPF 通用 Windows 平台(UWP)应用程序时常见的开发任务。...也许你会在一个项目中对它进行调整,突然间你就有了多个版本。将这些东西集中工具包,我们会让维护工作变得更容易,你只需把它放入这个库,这个库可以为你提供 Xamarin.Forms 的一站式服务。...实际上,这意味着我们将确保 XCT 可以继续使用 Xamarin.Forms,并且可以用于 iOS、Android UWP 的新版本,但不会增加新特性。...如前所述,XCT 将与 Xamarin.Forms 遵循相同的路径。...他有多年使用 Azure、ASP.NET、DevOps、Xamarin 其他.NET 技术的经验,他参与过许多不同的项目,一直构建多个真实世界的应用程序和解决方案。

2.7K20

C# Xamarin移动开发基础进修篇

Xamarin主要有这么几项技术,Xamarin.AndroidXamarin.iOSXamarin.Forms,此外还有Xamarin.UWP、Xamarin.Windows、Xamarin.WinPhone...10Android五大存储(Storage) 11、Android文件操作(File) 12、Android学习之Intent使用 13、Android页面跳转以及传值(Activity)...,获取网络信息状态,如当前的网络连接是否有效 获取WiFi状态android.permission.ACCESS_WIFI_STATE,获取当前WiFi接入的状态以及WLAN热点的信息 写入外部存储...AndroidActivity之间传递多个数值传递多个值可以使用Bundle对象作为容器,通过调用Bundle的Put**** 先将数据存储到Bundle,然后调用Intent的PutExtras...到时候《C# Xamarin移动开发项目实战篇》课程,阿笨将自己的实际项目经验毫无保留的分享给大家。快速通过Xamarin打造一个Android适合于后端管理系统App应用程序。

6K20

Xamarin 学习笔记 - 配置环境(Windows & iOS)

通过使用Xamarin.Forms,用户UI界面通过一个统一的框架,也就是XAML,可以同时用于三种不同的平台。...,同时在这个路径包含了一个空格,这一点可能会给你带来诸多的麻烦。...因此,为了防止以上情况发生,建议你手动的C盘根目录下安装这些组件,并在Windows环境变量手动添加这些组件的路径。...Visual Studio App Center(Xamarin Test Cloud之前) 创建新的应用程序开发之后,开发人员测试过程面临许多挑战,甚至他们必须通过持续集成交付,此时你需要一个允许你许多设备中进行测试的环境...一旦发布使用了应用程序,开发人员就想知道发生了什么并且发生崩溃时易于维护,你可以从应用程序的字段获取崩溃报告的实时堆栈跟踪。

6.1K20

Xamarin 社区团队发布了的两个新的工具包 MAUI 兼容版本

今天的 MauiCompat 版本包括对 iOS Android 的支持。未来的 MauiCompat 版本将包括对 iOS、Android、macOS UWP 的支持。...我们现在发布此版本,以便我们可以尽早获得您的反馈,确保 MauiCompat Toolkit .NET MAUI 发布时已准备好使用。...我们确实使它与所有当前的 .NET MAUI 更改命名空间兼容,因此您可以像以前一样继续享受标记扩展。 其他已知问题报告问题 .NET MAUI ,对象发生了变化。...ColorNullReferenceException 如果您发现任何问题,请在常规 Xamarin.CommunityToolkit 存储库中报告它们,但请确保您提到这与包有关,以便我们知道在哪里查找问题...这在未来的版本应该更符合。

2.2K10

.NET MAUI 性能提升(上)

同样,之前的预览.NET MAUIandroid上的启动时间也不是很理想: 应用程序 框架 启动时间(ms) Xamarin.Android Xamarin 306.5 Xamarin.Forms...这是一种AOT应用程序启动路径的机制,它显著提高了启动时间,而只增加了适度的应用程序大小。 .NET 6版本,这是完全有意义的默认选项。...); } private native void n_onCreate (Android.os.Bundle p0); 通过各种各样的魔术手势,n_onCreate调用到Mono运行时,调用c#的...我们的测试,调用JNI来获取Java数组元素,性能比字符串差。SplitSpan的新用法。对于如何在未来的.NET版本重新构建它,我们有一些想法。...我们正在研究如何在未来的.NET版本改进这一点。 查看xamarin-android#6657xamarin-android#6707了解这个改进的详细信息。

8.4K20

AndroidQ兼容性适配指南

AndroidQ android10.jpeg Android 10 的隐私权变更 隐私权变更 受影响的应用 缓解策略 ✅ 分区存储 针对外部存储的过滤视图,可提供对特定于应用的文件媒体集合的访问权限...如果应用以Android 10更高版本为目标平台,则您必须在应用的清单文件声明ACCESS_BACKGROUND_LOCATION权限接收用户权限,才能在应用位于后台时接收定期位置信息更新。...分区存储的影响 图片位置信息 一些图片会包含位置信息,因为位置对于用户属于敏感信息, Android 10 应用在分区存储模式下图片位置信息默认获取不到,应用通过以下两项设置可以获取图片位置信息: ...借助 SAF,用户可轻松在其所有首选文档存储提供程序浏览打开文档、图像及其他文件。用户可通过易用的标准界面,以统一方式在所有应用提供程序浏览文件,以及访问最近使用的文件。...无法访问存储设备上的文件 问题原因1: 直接使用路径访问公共目录文件。 问题分析1: Android Q上,APP默认只能访问外部存储设备上的App-specific目录。

6.9K30

Visual Studio 2019 16.1 更新摘要

Visual Studio 以本机方式将适用于 Linux 的 Windows 子系统 C++ 结合使用,并将 AddressSanitizer 用于 Linux 项目 WSL.。...我们改进修改了 C++ 快速信息工具提示的着色。 我们实现了新的 C++ 代码分析快速修补程序。 F# 我们发布了多个性能改进 bug 修复的批量F#F#工具。...此版本的 .NET 效率新增功能包括针对未导入类型的 IntelliSense 完成、切换单行注释/取消注释、将命名样式导出到 editorconfig,以及命名空间内/外部的首选 using 的新代码样式设置...Xamarin 默认 Xamarin Android 体验现在支持 API 28。 Xamarin.Forms 设计时属性的 XAML 建议。...nmake 环境缺少指向 NETFX 工具的路径。 单击打开项目的解决方案的 ASP.NET Core 项目。csproj文件。

5.7K40

Xamarin 技术全解析

Xamarin 是一套基于C#语言的跨平台移动应用开发工具,今年2月份微软宣布收购Xamarin,而后4月份进行的Build大会上微软宣布将会在各个版本的Visual Studio免费提供Xamarin...2.3 使用Xamarin.Forms来构建跨平台的应用 Xamarin.Forms 是一个创建跨平台用户界面的库,通过Xamarin.Forms 可以一次编码生成基于各个移动平台(iOS, Android...Xamarin.Forms提供了更高层次的一层UI组件抽象,这些组件进行最终呈现的时候,会以原生控件的方式表现出来,也就是说每一个Xmarin.Forms的控件最终会有多个平台的原生呈现逻辑,如下图中...Android Callable Wrappers(ACW) 使用C#开发的Android应用程序在运行的时候,C#代码是Mono虚拟机执行的,而Mono虚拟机是寄宿Dalvik虚拟机运行的,所有的...3.3 Xamarin.Forms实现原理 Xamarin Studio构建Xamarin.Forms跨平台的应用的时候,会生成Android以及iOS单独的项目工程,两者共享业务逻辑以及一些UI界面

5.9K70

Visual Studio 2017 15.8 版发行说明

(图 6)从发布摘要附加 Snapshot Debugger 适用于通用 Windows 平台开发的工具 Windows 10 Fall Creators Update(内部版本 16299)或更高版本的目标平台版本...可以 F# RFC 存储阅读每个更改的说明。 此版本还有对用于 Visual Studio 的 F# 工具的诸多改进。...(图 10)仅我的代码 数据断点现在可在“监视”、“快速监视”、“自动”“局部变量”窗口中进行设置,从而只需几次短的单击即可在存储于内存的值发生更改时切断。...Xamarin.Forms 预览器 当使用 Xamarin.Forms 3.1.0.583944 版或更高版本时,Xamarin.Forms 预览器现提供工具箱支持。...ASP.NET .NET Framework 密码支持 对于面向 .NET Framework 4.7.1 或更高版本的 ASP.NET .NET Framework 项目,现可通过右键单击项目选择“

8.2K10

【翻译】.NET 5 Preview 1 发布

.NET 5 Preview 1 发布 去年年底,我们发布了.NET Core 3.03.1.这些版本添加了桌面应用程序模型Windows Forms(WinForms)WPF,ASP.NET Blazor...Core.NETFrameWork更高版本5, 这也清楚表明了.NET 5是未来,.NET是一个用于构建任何类型的应用程序的单一统一平台...., Microsoft Duo(Android) iOS....下面的改进在Preview 1: 对null检查的改进–更多情况下,通过观察证明不需要null检查的更多模式,无需生成null检查 调整公共子表达式评估(CSE) - JIT查找迭代那些只需要求值一次的重复表达式...使用.NET Core 1.0,我们ASP.NET,EF.NET Core拥有超过100个存储库.通过此最新版本, 我们现在可以一方面计算主存储库.我们还将几乎所有存储库都移到了dotnet org

88110

【翻译】.NET 5 Preview 1 发布

.NET 5 Preview 1 发布 去年年底,我们发布了.NET Core 3.03.1.这些版本添加了桌面应用程序模型Windows Forms(WinForms)WPF,ASP.NET Blazor...Core.NETFrameWork更高版本5, 这也清楚表明了.NET 5是未来,.NET是一个用于构建任何类型的应用程序的单一统一平台...., Microsoft Duo(Android) iOS....下面的改进在Preview 1: 对null检查的改进–更多情况下,通过观察证明不需要null检查的更多模式,无需生成null检查 调整公共子表达式评估(CSE) - JIT查找迭代那些只需要求值一次的重复表达式...使用.NET Core 1.0,我们ASP.NET,EF.NET Core拥有超过100个存储库.通过此最新版本, 我们现在可以一方面计算主存储库.我们还将几乎所有存储库都移到了dotnet org

77710

Xamarin.Forms入门-使用 Xamarin.Forms 来创建跨平台的用户界面

本文将会介绍整个Xamarin.Forms框架的核心基础概念,包括: · 如何安装 Xamarin.Forms · Visual StudioXamarin Studio建立 Xamarin.Forms...Forms开始编程 开发人员可以Xamarin StudioVisual Studio创建 Xamarin.Forms的项目,有四种项目类型可以选择: Portable Library:用于代码共享的类库...Xamarin.Forms每一个屏幕画面都有对应概念叫:Page,Xamarin.Forms.Page 安卓与 Activity对应, iOS 与 ViewController对应,Windows...使用 Xamarin.Forms Page Android 创建一个Activity类型,并且使用 MainLauncher 特性修饰, OnCreate 方法,初始化Xamarin.Forms框架...StackLayout我们可以通过 HeightRequest WidthRequest指定子元素的高度宽度: var red = new Label { Text = "Stop", BackgroundColor

12.9K70

详解Android10的分区存储机制(Scoped Storage)适配教程

每个应用程序都有自己的存储空间。 应用程序不能翻过自己的目录,去访问公共目录。 应用程序请求的数据都要通过权限检测,不符合要求不会被放行。 2. 关于Android10的分区机制 ?...以 Android 10(API 级别 29)及更高版本为目标平台的应用在默认情况下被赋予了对外部存储设备的分区访问权限(即分区存储), 对外部存储文件访问方式重新设计,便于用户更好的管理外部存储文件。...为此,请确保针对搭载 Android 10(API 级别 29)及更高版本的设备启用了该行为。...应用自己创建的照片、视频音频(通过MediaStore访问)。 分区存储将影响Android10系统首次安装启动、且targetSdkVersion =29的应用。...应用想要获取当前应用的专有存储目录路径是可以用Context.getExternalFilesDir()的方式获取

3.1K32

Flutter与Xamarin跨平台移动开发对比

Xamarin允许开发人员访问原生的AndroidiOS API,通过Xamarin Testing Cloud.提供共享的C#代码库以及跨设备的应用程序进行测试。...如果您已具备C#.NET技能,则可以立即使用Xamarin。如果您利用Xamarin.Forms,您可以Xamarin重复使用高达96%的C#代码。...Flutter可以通过packages访问所有平台服务包括存储传感器的API。您还可以使用Flutter Libraries来实现用于从Dart调用原生函数。...lutter iOSAndroid结构 Xamarin,C#代码被编译成机器代码,然后打包在.app。...amarin iOSAndroid架构 UI设计 虽然Xamarin使用本机UI组件是一件好事,但随着平台定期更新,它会带来成本,而框架可能需要更长时间才能适应新版本

3.5K20

干货 | 携程Android 10适配踩坑指南

Android 10 版本,官方的改动较大,相应的开发者适配成本还是很高的。...以 Android 10(API 级别 29)及更高版本为目标平台的应用在默认情况下被赋予了对外部存储设备的分区访问权限(即分区存储), 对外部存储文件访问方式重新设计,便于用户更好的管理外部存储文件。...要点: Android Q文件存储机制修改成了沙盒模式 APP只能访问自己目录下的文件公共媒体文件 Android Q版本以下机型,还是使用老的文件存储方式 Android Q及以上版本机型,所有应用均需要分区存储..., Android 10应用在分区存储模式下图片位置信息默认获取不到,应用通过以下两项设置可以获取图片位置信息: manifest申请ACCESS_MEDIA_LOCATION 调用MediaStore...主要是公共目录下创建文件或文件夹拿到本地路径uri,不同的Uri,可以保存到不同的公共目录

3.2K77

Succinctly 中文系列教程(三)20220109 更新

八、云上运行 Docker 九、继续你的 Docker 之旅 Succinctly EF 核心教程 零、简介 一、配置 二、数据库 四、向数据库写入数据 三、从数据库获取数据 五、日志 六、性能优化...八、 C# 插入数据 九、使用 C# 查找(查询)数据 十、C# 的二进制数据(文件处理) 十一、备份恢复 十二、最后的话 Succinctly MonoGame 教程 一、简介 二、安装配置...六、值的查找 七、分布式哈希表类 八、Dht——自举 九、存储桶管理 十、键值管理 十一、坚持 DHT 十二、异步实现的注意事项 十三、基本的 TCP 子网协议 十四、RPC 错误处理延迟驱逐 十五...教程 零、简介 一、开始学习 Xamarin.Forms 二、平台间代码共享 三、使用 XAML 构建用户界面 四、使用布局组织 UI 五、Xamarin.Forms 常用控件 六、页面导航 七、...资源和数据绑定 八、访问平台特定的 API 九、管理应用生命周期 十、实用资源 Succinctly 面向 MacOS 的 Xamarin.Forms 教程 零、简介 一、开始学习 Xamarin.Forms

18.4K20
领券