将文件写入闪存驱动器(仅限 Android)

Wot*_*aio 6 storage android usb-drive flutter

是否可以使用 flutter 将文件保存到闪存驱动器?

我正在使用带有 USB c 端口的随身碟,如下所示: https ://www.bestbuy.com/site/sandisk-ultra-dual-drive-go-1tb-usb-type-a-usb-type-c-闪存驱动器-黑色/6560692.p?skuId=6560692

我发现这个问题: https://github.com/flutter/flutter/issues/40504

我已经尝试了几件事,但path_provider没有正确返回目录getExternalStorageDirectories()

我已经将权限添加到清单中并请求它permission_handler

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    android:maxSdkVersion="28" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET"/>
Run Code Online (Sandbox Code Playgroud)

我也尝试过file_picker await FilePicker.platform.getDirectoryPath();

但是,当选择闪存驱动器上的文件夹时,它返回的路径只是:/

我也尝试使用usb_serial

final bytes = <int>[];

await yt.videos.streamsClient.get(audioStream).listen((chunk) {
  bytesReceived += chunk.length;
  bytes.addAll(chunk);

}, onDone: () async{
  MyLog.log('Done onDone');

}, onError: (error) async{
  MyLog.log('Done error: $error');

}).asFuture();

final devices = await UsbSerial.listDevices();
final port = await devices.first.create();
final openResult = await port?.open();

if ( !(openResult ?? false)) {
  MyLog.log("Failed to open");
  return;

}

port?.inputStream?.listen((Uint8List event) {
  MyLog.log('Event close');
  port.close();
});

await port?.write(Uint8List.fromList(bytes));
Run Code Online (Sandbox Code Playgroud)

但没有成功

小智 1

尝试使用 Flutter\xe2\x80\x99s 平台通道与处理 USB 驱动器上的文件操作的本机 Android 代码(Java 或 Kotlin)进行通信。

\n

扑:

\n
import 'package:flutter/services.dart';\n\nclass UsbStorage {\n  static const platform = const MethodChannel('com.example.app/usb');\n   ~~~code\n}\n
Run Code Online (Sandbox Code Playgroud)\n

科特林:

\n
class MainActivity: FlutterActivity() {\n  private val CHANNEL = "com.example.app/usb"\n\n  override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {\n~~~code\n}\n
Run Code Online (Sandbox Code Playgroud)\n