本題
タイトル通り、MAUI に Folder Picker (フォルダ選択ダイアログ) が追加されたようです✨
ひと月前くらいに MAUI の学習も兼ねて、簡単なミュージックプレイヤーを作ろうとしたことがありました。
選択したフォルダの中にあるMP3ファイルを名前の順番通りに、再生リストに入れるという感じにしたかったのですが、File Picker (ファイル選択ダイアログ) はあるのに、Folder Picker はなくて製作を断念したんですよね・・・
自作で Folder Picker を作る方法は Stack Overflow などに載ってはいたのですが、いまいち乗り気になれず。
そろそろ公式で追加されていないかなーと思ってググってみたら、まさかのヒット! やった!
導入手順
-
NuGet から CommunityToolkit.Maui をインストール
-
パッケージの ReadMe.txt の手順に従って MauiProgram.cs を適切に変更
+ using CommunityToolkit.Maui; public static class MauiProgram { public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .UseMauiApp<App>() + .UseMauiCommunityToolkit() .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); + fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold"); }); builder.Services.AddMauiBlazorWebView(); #if DEBUG builder.Services.AddBlazorWebViewDeveloperTools(); builder.Logging.AddDebug(); #endif return builder.Build(); } }
-
Android の場合は、さらに AndroidManifest.xml に権限を追加
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <application android:allowBackup="true" android:icon="@mipmap/appicon" android:roundIcon="@mipmap/appicon_round" android:supportsRtl="true"></application> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> + <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> </manifest>
-
実際に使用する
Namespace は CommunityToolkit.Maui.Storage.FolderPickerprivate string folderName = "folder Name"; private string folderPath = "folder Path"; private async Task PickAsync() { + var folder = await CommunityToolkit.Maui.Storage.FolderPicker.Default.PickAsync(CancellationToken.None); folderName = folder.Name; folderPath = folder.Path; }
これで、これからはフォルダー選択に悩まされることはなくなりますね!
良かったです😊