Как получить массив байтов, когда у меня есть объект URI в Xamarin.Android? - PullRequest
0 голосов
/ 05 ноября 2018

Я хочу зарегистрировать пользовательскую ассоциацию файлов и обработать файл. Для обработки файла мне нужен массив байтов за файлом.

Я успешно зарегистрировался для расширения .xmoo через:

[IntentFilter(new[] { Intent.ActionView }, Categories = new[] { Intent.CategoryDefault }, DataMimeType = "application/*", DataPathPattern = "*.xmoo")]  
public class SplashActivity : AppCompatActivity
{
    public override void OnCreate(Bundle savedInstanceState, PersistableBundle persistentState)
    {
        base.OnCreate(savedInstanceState, persistentState);
        Android.Net.Uri fileUri = Intent.Data;

Теперь я в растерянности от того, как получить массив байтов из Uri. Какой канонический способ чтения байтов?

1 Ответ

0 голосов
/ 05 ноября 2018

Если я не ошибаюсь, преобразование его в поток памяти, а затем в байтовый массив может помочь:

Примерно так:

public byte[] UriToByteArrayConverter(Android.Net.Uri uri)
{
  Stream stream = ContentResolver.OpenInputStream(uri);   
  byte[] byteArray;

  using (var memoryStream = new MemoryStream())
  {
     stream.CopyTo(memoryStream);
     byteArray = memoryStream.ToArray();
  }
    return byteArray;
}

Если это не работает, пожалуйста, вернитесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...