Xamarin.Essentials:ファイル ピッカー
FilePicker クラスを利用すると、ユーザーはクラスから 1 つまたは複数のファイルを選択できます。
作業開始
この API の使用を始めるには、Xamarin.Essentials の概要ガイドを読み、ライブラリが正しくインストールされてプロジェクトに設定されていることを確認してください。
FilePicker の機能にアクセスするには、次のプラットフォーム固有の設定が必要です。
ヒント
アクセス許可の確認と要求が Xamarin.Essentials によって自動的に処理されるため、UI スレッドではすべてのメソッドを呼び出す必要があります。
ファイルを選択する
FilePicker.PickAsync()
メソッドを使用すると、ユーザーはデバイスからファイルを選択できます。 このメソッドを呼び出すとき、別の PickOptions
を指定できます。表示するタイトルやユーザーに選択を許可するファイルの種類を指定できます。 既定
async Task<FileResult> PickAndShow(PickOptions options)
{
try
{
var result = await FilePicker.PickAsync(options);
if (result != null)
{
Text = $"File Name: {result.FileName}";
if (result.FileName.EndsWith("jpg", StringComparison.OrdinalIgnoreCase) ||
result.FileName.EndsWith("png", StringComparison.OrdinalIgnoreCase))
{
var stream = await result.OpenReadAsync();
Image = ImageSource.FromStream(() => stream);
}
}
return result;
}
catch (Exception ex)
{
// The user canceled or something went wrong
}
return null;
}
既定のファイルの種類には FilePickerFileType.Images
、FilePickerFileType.Png
、FilePickerFilerType.Videos
が表示されます。 PickOptions
を作成するとき、ファイルの種類としてカスタムを指定でき、プラットフォーム別にカスタマイズできます。 たとえば、ファイルの種類として comic を指定すると次のようになります。
var customFileType =
new FilePickerFileType(new Dictionary<DevicePlatform, IEnumerable<string>>
{
{ DevicePlatform.iOS, new[] { "public.my.comic.extension" } }, // or general UTType values
{ DevicePlatform.Android, new[] { "application/comics" } },
{ DevicePlatform.UWP, new[] { ".cbr", ".cbz" } },
{ DevicePlatform.Tizen, new[] { "*/*" } },
{ DevicePlatform.macOS, new[] { "cbr", "cbz" } }, // or general UTType values
});
var options = new PickOptions
{
PickerTitle = "Please select a comic file",
FileTypes = customFileType,
};
複数のファイルを選択する
ユーザーに複数のファイルを選択してもらうなら、FilePicker.PickMultipleAsync()
メソッドを使用できます。 追加情報を指定する目的でパラメーターとして PickOptions
も受け取ります。 結果は PickAsync
と同じですが、1 つの FileResult
ではなく、繰り返すことができる IEnumerable<FileResult>
が返されます。
ヒント
プロパティ FullPath
は、ファイルへの物理パスを常に返すわけではありません。 ファイルを取得するには、OpenReadAsync
メソッドを使用します。