Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Xamarin.Android中有uri对象时,如何获取字节数组?_C#_Android_Xamarin_Io_Xamarin.android - Fatal编程技术网

C# 在Xamarin.Android中有uri对象时,如何获取字节数组?

C# 在Xamarin.Android中有uri对象时,如何获取字节数组?,c#,android,xamarin,io,xamarin.android,C#,Android,Xamarin,Io,Xamarin.android,我想注册一个自定义文件关联并处理该文件。要处理文件,我需要文件后面的字节数组 我通过以下方式成功注册了自定义.xmoo扩展名: [IntentFilter(new[] { Intent.ActionView }, Categories = new[] { Intent.CategoryDefault }, DataMimeType = "application/*", DataPathPattern = "*.xmoo")] public class SplashActivity : App

我想注册一个自定义文件关联并处理该文件。要处理文件,我需要文件后面的字节数组

我通过以下方式成功注册了自定义
.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获取字节数组。读取字节的标准方法是什么?

如果我没有错,将其转换为内存流,然后再转换为字节数组可能会达到以下效果:

大概是这样的:

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;
}

如果它不起作用,请恢复。

阅读
Uri
的输入流,参考
ContentResolver
API了解更多详细信息它是否有用
var-clientHandler=new-HttpClientHandler();var httpClient=新的httpClient(clientHandler);httpClient.BaseAddress=baseUri;返回wait-httpClient.GetByteArrayAsync(baseUri)