資料夾選擇器

它 FolderPicker 提供從檔案系統中選擇資料夾的功能。

以下必需的前提條件 FolderPicker:

將權限新增至AndroidManifest.xml:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

基本用法

FolderPicker可以透過下列方式新增至 .NET MAUI 應用程式。

要求權限

開發者必須手動申請權限。StorageRead:

var readPermissionsRequest = await Permissions.RequestAsync<Permissions.StorageRead>();

選擇資料夾

async Task PickFolder(CancellationToken cancellationToken)
{
    var result = await FolderPicker.Default.PickAsync(cancellationToken);
    if (result.IsSuccessful)
    {
        await Toast.Make($"The folder was picked: Name - {result.Folder.Name}, Path - {result.Folder.Path}", ToastDuration.Long).Show(cancellationToken);
    }
    else
    {
        await Toast.Make($"The folder was not picked with error: {result.Exception.Message}").Show(cancellationToken);
    }
}

資料夾

該 Folder 記錄代表檔案系統中的一個資料夾。 它定義了以下性質:

  • 路徑包含一個資料夾路徑。
  • 名稱包含一個資料夾名稱。

資料夾選擇器結果

儲存來自 PickAsync的資訊。

屬性

房產 類型 Description
資料夾 Folder 取得表示檔案系統中所選資料夾的Folder。
例外狀況 Exception 如果選取操作失敗,將會取得 Exception 。
是否成功 bool 獲得判斷操作是否成功的值。

Methods

方法 Description
確保成功 驗證選擇操作是否成功。

警告

EnsureSuccess 如果選擇操作失敗,將拋出 Exception。

Methods

方法 Description
PickAsync 請求權限並允許在檔案系統中選擇資料夾。

依賴註冊

如果你想注入服務,首先需要註冊它。 請更新 MauiProgram.cs 並加入以下變更:

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder
            .UseMauiApp<App>()
            .UseMauiCommunityToolkit();

        // Register the FolderPicker as a singleton
        builder.Services.AddSingleton<IFolderPicker>(FolderPicker.Default);
        
        // Register the MainPage as transient to make sure it can resolve the IFolderPicker dependency.
        builder.Services.AddTransient<MainPage>();
        return builder.Build();
    }
}

現在你可以這樣注入服務:

public partial class MainPage : ContentPage
{
    private readonly IFolderPicker folderPicker;

    public MainPage(IFolderPicker folderPicker)
    {
        InitializeComponent();
        this.folderPicker = folderPicker;
    }

    async Task PickFolder(CancellationToken cancellationToken)
    {
        var result = await folderPicker.PickAsync(cancellationToken);
        result.EnsureSuccess();
        await Toast.Make($"Folder picked: Name - {result.Folder.Name}, Path - {result.Folder.Path}", ToastDuration.Long).Show(cancellationToken);
    }
}

如需了解如何提供CancellationToken,請參考Microsoft 文件。

範例

你可以在 FolderPicker中找到實際運作的範例。

API

您可以在 .NET MAUI Community Toolkit GitHub 存放庫FolderPicker找到 的原始程式碼。