私は、XamarinとMVVMを使って、iOSとAndroid用のアプリケーションを開発しています。アプリケーションはサーバーからファイルをダウンロードする必要があります。詳細には、Android上にボタンがあり、クリックするとAndroidファイルピッカーが開き、ファイルを取得しています。 iOSでも同じです。問題は、ストリームとしてviewmodelにファイルを送信しようとしていることですが、AndroidではAndroid.Runtime.InputStreamInvoker
、iOSではNSData
となります。ファイルのストリームをビューモデルやその他のキャストに送信する普遍的な方法はありますか?ストリームへのキャストは機能しません。送信するとビューモデルではなく、ストリームから情報を取得できません。多分誰もそのような問題を抱えていました。Xamarin MVVMがファイルを操作する
public override void OnActivityResult(int requestCode, int resultCode, Intent intent)
{
base.OnActivityResult(requestCode, resultCode, intent);
if (resultCode == (int)Result.Ok)
{
var returnUri = intent.Data;
var mimeType = _baseActivity.ContentResolver.GetType(returnUri);
var returnCursor =
_baseActivity.ContentResolver.Query(returnUri, null, null, null, null);
int nameIndex = returnCursor.GetColumnIndex(OpenableColumns.DisplayName);
int sizeIndex = returnCursor.GetColumnIndex(OpenableColumns.Size);
returnCursor.MoveToFirst();
var name = returnCursor.GetString(nameIndex);
var size = returnCursor.GetLong(sizeIndex);
var inputStream = (Android.Runtime.InputStreamInvoker) _baseActivity.ContentResolver.OpenInputStream(returnUri);
var count = inputStream.BaseInputStream.Available();
//then I want to send inputStrea here what to do next??
}
}
私はファイル全体を読んで、たとえばMemoryStream
のためにそれをコピーして送ることができることを知っているが、それは非常に遅く、よくないです、私は探しています:例として
、Android上でファイルを受信コピーを作成しない方法の場合