android - 如何使用 flutter "File Class"删除 android 上的文件?

标签 android file flutter

<分区>

我正在制作一个 flutter 应用程序,我想让用户能够使用我的应用程序从 SD 卡或手机存储中删除文件。 使用代码

File f = new File.fromUri(Uri.file(song.uri));
f.delete();

File Class 中有两个函数 delete()deleteSync() 我尝试使用这两个函数但是出现错误与 permission denied 相关。那我怎么删除文件呢??

删除文件时出错--

E/flutter (16195): [ERROR:topaz/lib/tonic/logging/dart_error.cc(16)] Unhandled exception:
E/flutter (16195): FileSystemException: Cannot delete file,
path = '/storage/2748-0816/Music/AUD-20180613-WA0006.mp3' (OS Error: Permission denied, errno = 13)
E/flutter (16195): #0      _File._delete.<anonymous closure> (dart:io/file_impl.dart:295:9)
E/flutter (16195): #1      _RootZone.runUnary (dart:async/zone.dart:1381:54)
E/flutter (16195): #2      _FutureListener.handleValue (dart:async/future_impl.dart:129:18)
E/flutter (16195): #3      Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:633:45)
E/flutter (16195): #4      Future._propagateToListeners (dart:async/future_impl.dart:662:32)
E/flutter (16195): #5      Future._completeWithValue (dart:async/future_impl.dart:477:5)
E/flutter (16195): #6      Future._asyncComplete.<anonymous
closure> (dart:async/future_impl.dart:507:7)
E/flutter (16195): #7      _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
E/flutter (16195): #8      _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)

我的android xml文件

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />

最佳答案

确保您已在 AndroidManifest.xml 中包含相关权限

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Add this -->
    <uses-permission android:name="android.permission. WRITE_EXTERNAL_STORAGE" />
    <!-- Flutter stuff --->
</manifest>

但是,您的应用程序可能在 API 6.0 以上的设备上运行。接下来试试这个:

registrar.activity().requestPermissions(activity, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);

关于android - 如何使用 flutter "File Class"删除 android 上的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51259899/

相关文章:

flutter - 在小部件之间画一条线并使线可点击

android - 调整文本按钮中的文本大小

android - 使用 Scribe 进行 OAuth 请求时如何解决 java.io.EOFException?

c++ - 存储整数的文件大小

c# - 获取拖入 Windows Forms 窗体中的文件的路径

flutter - 其他Dart文件中的Flutter访问变量

flutter - 如何在widgetTree之外访问rxdart-bloc函数?

java - 将文件存储为 android list 的一部分以进行部署然后打开它?

php - 将数组从 Android 传递到 _GET php

java - Java中使用delete()方法删除文件