Xamarin.Forms ファイル選択
Vuetify から、ファイルアップロード、Google Cloud Vision を使用して、OCR機能の検証まで実施。
次は、Xamarin側で同等の機能を実現したい。
まずは、ファイル選択機能。
どうやら、Xamarin.Forms標準では用意されていなさそうだ。
Xamarin ポピュラープラグインから探す。(ただし、現時点でURLに登録されているバージョンは古いため、新しいものを選択する)
1.ファイル選択プラグイン
1.1 インストール
https://www.nuget.org/packages/Xamarin.Plugin.FilePicker/2.0.135
NuGetで、Xamarin.Plugin.FilePicker を検索しインストール
古いバージョンでの説明だが、以下のサイトの手順がわかりやすい。
https://www.c-sharpcorner.com/article/how-to-create-file-picker-in-xamarin-forms/
1.2 Androidアクセス許可を追記
Androidプロジェクト – Properties – AndroidManifest.xmlに、use-permission の下記2行、READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGEを追記。
<?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.FavoPhrase" android:installLocation="preferExternal"> <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="27" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application android:label="FavoPhrase.Android"></application> </manifest>
https://docs.microsoft.com/ja-jp/xamarin/android/app-fundamentals/permissions?tabs=windows
2.実装
2.1 呼び出しボタンの追加
<Button Margin="0,10,0,0" Text="Pick File" Command="{Binding FilePickCommand}" BackgroundColor="{StaticResource Primary}" TextColor="White"/>
2.2 ViewModel
ボタン押下時のコマンドの定義、選択されたファイル名をポップアップ表示させる。
using System; using System.Windows.Input; using System.Diagnostics; using Xamarin.Forms; using System.Net.Http; using Plugin.FilePicker; namespace FavoPhrase.ViewModels { public class AboutViewModel : BaseViewModel { public AboutViewModel() { Title = "About"; FilePickCommand = new Command(FilePick); } private async void FilePick() { var file = await CrossFilePicker.Current.PickFile(); if (file != null) { await Page.DisplayAlert("Selected File", file.FileName, "OK"); } } public ICommand FilePickCommand { get; } public Page Page { get; set; } } }
3.実行
3.1 Android
Google Drive含む様々なロケーションからファイルを選択できる。
3.2 iPhone
こちらも、iCloud含むさまざまなロケーションからファイル選択可能
3.3 UWP
おなじみのファイルチューザー
割といい感じだ。