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.ImagesFilePickerFileType.PngFilePickerFilerType.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 メソッドを使用します。

プラットフォームによる違い

  • プラットフォームによる違いはありません。

API