【问题标题】:file picker issue in xamarin forms for Android适用于 Android 的 xamarin 表单中的文件选择器问题
【发布时间】:2021-02-09 05:42:21
【问题描述】:

我正在使用xamarin.plugin.FilePicker 从 Android 的 xamarin 表单中的用户那里获取文件。但它不能正常工作。

当我在物理 Android 设备上进行测试并尝试获取任何文件(如 PDF、doc)时,它会导致我的应用程序崩溃,或者有时它会将我重定向到我的应用程序主页。当我点击上传文件时,调试器停止,因此我无法在物理设备中调试问题。我在项目中添加了从存储读取、写入文件的必要权限。我不需要 iOS 应用,所以我不对其进行测试。

选择文件的代码:

FileData fileData = await CrossFilePicker.Current.PickFile();
            if (fileData == null)
                return; // user canceled file picking

            string fileName = fileData.FileName;
            FileInfo fi = new FileInfo(fileName);
            var ext = fi.Extension;
            string contents = System.Text.Encoding.UTF8.GetString(fileData.DataArray);
            var docBase64Path = Convert.ToBase64String(fileData.DataArray);
            int documentTypeId = 0;

Android 清单中的 Android 权限:

希望有更好的解决方案。

【问题讨论】:

  • 您在 Xamarin Essentials 中尝试过 FilePicker 吗?

标签: .net xamarin xamarin.forms xamarin.android xamarin.ios


【解决方案1】:

该软件包不再维护(repo 已归档)它已移至 Microsoft 官方维护的 Xamarin.Essential 软件包中的 FilePicker

看看那个repo github页面有一个Migration Guide

【讨论】:

  • 如果它回答了您的问题或对您有帮助,请通过upvote ▲/✅ 告诉我,否则您可以给我留下反馈/评论。
【解决方案2】:

请在清单文件下添加以下内容,

<application android:label="AppName" android:requestLegacyExternalStorage="true" android:allowBackup="true" android:usesCleartextTraffic="true">
    <provider android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}.provider" android:exported="false" android:grantUriPermissions="true">
        <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"></meta-data>
    </provider>
</application>

在 Android 中,在 Resources 下创建文件夹 xml 并添加 xml 文件 file_paths 。在该文件下请添加下面的代码,

<?xml version="1.0" encoding="utf-8"?>
   <paths xmlns:android="http://schemas.android.com/apk/res/android">
        <cache-path name="all_dirs" path="." />
        <external-files-path name="my_images" path="Pictures" />
        <external-files-path name="my_movies" path="Movies" />
        <external-path name="external_files" path="."/>
   </paths>

如果需要任何其他帮助,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    相关资源
    最近更新 更多