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
おなじみのファイルチューザー
割といい感じだ。