【发布时间】:2018-12-16 14:29:28
【问题描述】:
我正在尝试在 xamarin.Forms 上实现包“FilePicker”,但不幸的是没有成功。
这是 XAML.cs 中的代码:
using System;
using Xamarin.Forms;
using Plugin.FilePicker;
using Plugin.FilePicker.Abstractions;
namespace FilesTest
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
async void Pic()
{
try
{
FileData fileData = await CrossFilePicker.Current.PickFile();
if (fileData == null) {
Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
return; // user canceled file picking
}
string fileName = fileData.FileName;
string contents = System.Text.Encoding.UTF8.GetString(fileData.DataArray);
System.Console.WriteLine("File name chosen: " + fileName);
System.Console.WriteLine("File data: " + contents);
}
catch (Exception ex)
{
System.Console.WriteLine("Exception choosing file: " + ex.ToString());
}
}
private void PickFileButton_Clicked(object sender, EventArgs e)
{
Pic();
}
}
}
edit:对于那些询问的人,我正在尝试让它在 android 上运行,我的 AndroidManifest.xml 文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.FilesTest">
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="27" />
<application android:label="FilesTest.Android"></application>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
</manifest>
(XAML 中的代码只是一个简单的按钮,在被点击时会调用 PickFileButton_Clicked() 方法)
经过数小时的调试,除了那些“~”字符外,我的控制台上没有写入任何其他内容...我知道 FileData 对象在文件选择后为空(不,正在选择的文件是一个简单的文本文件...),但我找不到任何关于它为什么会发生的信息。有谁知道为什么 FileData 对象为空?请帮忙。
【问题讨论】:
-
您是否按照文档中标记为重要部分的步骤进行操作?
-
@Jason 如果您链接到这些文档可能会有所帮助...
-
这是安卓还是iOS?您是否设置了权限和权限请求?如果是 Android,Logcat 会说什么,如果是 iOS,控制台会说什么?如果这是一个 .netstandard 项目,在 Android 或 iOS 项目中,您是否还添加了 File Picker nuget 包?简而言之,这可能不起作用的原因有很多,我们需要更多信息。
-
@Jason 如果您的意思是权限问题,我已经编辑了问题并添加了我的 AndroidManifest.xml 文件,因此您可以看到权限。虽然我不确定我做得对...
标签: c# xamarin xamarin.forms filepicker