如何使用Xamarin android在两台android设备之间以编程方式发送文件

如何使用Xamarin android在两台android设备之间以编程方式发送文件,android,bluetooth,xamarin.android,xamarin,Android,Bluetooth,Xamarin.android,Xamarin,我正在尝试通过蓝牙以编程方式将一个文本文件从一个安卓设备发送到另一个安卓设备。我可以配对和连接,甚至可以发送字符串,但不能发送文件 这是我基于bluetoothchat示例的实现 客户 private void SendFile() { // Check that we're actually connected before trying anything if (service.GetState() != BluetoothService.STAT

我正在尝试通过蓝牙以编程方式将一个文本文件从一个安卓设备发送到另一个安卓设备。我可以配对和连接,甚至可以发送字符串,但不能发送文件

这是我基于bluetoothchat示例的实现

客户

  private void SendFile()
    {
        // Check that we're actually connected before trying anything
        if (service.GetState() != BluetoothService.STATE_CONNECTED)
        {
            Toast.MakeText(this, Resource.String.not_connected, ToastLength.Short).Show();
            return;
        }


        using (FileStream sourceStream = new FileStream("/storage/sdcard0/test.zip", FileMode.Open, FileAccess.Read))
        {

            int bufferSize = (int)sourceStream.Length;

            byte[] array = new byte[bufferSize];

            sourceStream.Read(array, 0, bufferSize);

            service.Write(array);


        }
    }
服务

     public void WriteFile(byte[] @out)
    {
        // Create temporary object
        ConnectedThread r;
        // Synchronize a copy of the ConnectedThread
        lock (this)
        {
            if (_state != STATE_CONNECTED)
                return;
            r = connectedThread;
        }
        // Perform the write unsynchronized


        r.WriteFile(@out);
    }


    public void WriteFile(byte[] buffer)
        {

            mmOutStream.Write(buffer, 0, buffer.Length);



        }
我是不是在密码里漏掉了什么?我是否需要设置一个新的目标Filestream,其中包含用于写入的目标路径?当我第一次运行代码时,我看到要传输的字节显示在目标android设备上,但我没有看到存储在文件系统中的文件


如有任何意见,我将不胜感激

您是否将文件存储在任何位置?浏览聊天代码时,我会假设它位于BluetoothChar.cs中的“MyHandler.HandleMessage(Message msg)”中。因此,我最终需要打开一个新的流,目标路径提供文件的存储位置正确?正确。使用StreamWriter之类的东西是最快、最简单的方法。好吧,看来在文件流中添加它是行不通的。有人解决过类似的问题吗?你有没有找到解决方案?如果是,你能把它贴在这里吗?