日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 读写文件权限_flutter 文件下载

發布時間:2025/3/20 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 读写文件权限_flutter 文件下载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

sa as z主要用到下面的幾個庫

flutter_downloader: ^1.1.7path_provider: 1.1.2permission_handler: ^3.1.0progress_dialog: ^1.1.0+1

準備步驟:

下載肯定是要先權限配置和權限申請.

1.權限配置.

清單文件配置權限

申請權限 ,加入依賴

permission_handler: ^3.1.0// 申請權限 Future _checkPermission() async { // 先對所在平臺進行判斷 if (Theme.of(context).platform == TargetPlatform.android) { PermissionStatus permission = await PermissionHandler() .checkPermissionStatus(PermissionGroup.storage); if (permission != PermissionStatus.granted) { Map permissions = await PermissionHandler() .requestPermissions([PermissionGroup.storage]); if (permissions[PermissionGroup.storage] == PermissionStatus.granted) { return true; } } else { return true; } } else { return true; } return false; }

2.下載目錄配置

在 Flutter 里實現文件讀寫,需要使用 path_provider 和 dart 的 io 模塊。path_provider 負責查找 iOS/Android 的目錄文件,IO 模塊負責對文件進行讀寫

然后我們創建我們想要保存文件的目錄

內外部存儲常用目錄操作

context.getFilesDir() 內部存儲data/data/包名/files目錄context.getCacheDir() 內部存儲data/data/包名/cache目錄Environment.getExternalStorageDirectory() 外部存儲根目錄Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_DCIM) 外部存儲公有目錄context.getExternalFilesDir() 外部存儲私有目錄storage/sdcard/Android/data/包名/files。一般存儲長時間保存的數據。

使用getApplicationDocumentsDirectory,下載之后生成的文件目錄是這樣的

/storage/emulated/0/Android/data/com.lyy.flutter_download_demo/files/Download/test.apk

使用getTemporaryDirectory(臨時/緩存文件目錄,系統可以在清理的時候刪除的),生成之后是這樣的
/data/user/0/com.lyy.flutter_download_demo/cache/Download/test.apk

這兩個目錄都是需要root權限才可以看到的.

沒有權限

因為我沒有root成功,所以我暫時使用外置存儲.下載成功之后是這樣的目錄結構,如果為了讓其他app可以訪問到你的文件,請放置在 external storage 目錄下

/storage/emulated/0/Android/data/com.lyy.flutter_download_demo/files/Download/test.apk

// 獲取存儲路徑 Future _findLocalPath() async { // 因為Apple沒有外置存儲,所以第一步我們需要先對所在平臺進行判斷 // 如果是android,使用getExternalStorageDirectory // 如果是iOS,使用getApplicationSupportDirectory final directory = Theme.of(context).platform == TargetPlatform.android ? await getExternalStorageDirectory() : await getApplicationSupportDirectory(); return directory.path; }

3.下載

flutter_downloader庫的使用.可以參考文檔https://pub.dev/packages/flutter_downloader,ios部分需要自己配置,android需要自己配置fileprovider.

如果使用到filedownload庫的下載后打開文件,查看filedownload源代碼可以看到,是需要使用到他的peovider的配置的

把下面這段加到清單文件里面去

在initstate里面初始化,

@overridevoid initState() {super.initState();FlutterDownloader.registerCallback(downloadCallback);}

在dispose方法里面銷毀掉這個監聽

@override void dispose() { FlutterDownloader.registerCallback(null); super.dispose(); }??// 執行下載文件的操作_doDownloadOperation() async { /** * 下載文件的步驟: * 1. 獲取權限:網絡權限、存儲權限 * 2. 獲取下載路徑 * 3. 設置下載回調 */ // 獲取權限 var isPermissionReady = await _checkPermission(); if (isPermissionReady) { // 獲取存儲路徑 var _localPath = (await _findLocalPath() + '/Download'); final savedDir = Directory(_localPath); // 判斷下載路徑是否存在 bool hasExisted = await savedDir.exists(); // 不存在就新建路徑 if (!hasExisted) { savedDir.create(); } // 下載鏈接 String downloadUrl = "https://s.beta.myap p.com/myapp/rdmexp/exp/file2/2019/12/17/commegstarboss_1.0.1_d70afe0a-0d88-5323-b0a1-5d438673042c.apk"; // 下載 _downloadFile(downloadUrl, _localPath); } else { showToast("您還沒有獲取權限"); }}_downloadFile(downloadUrl, savePath) async { await FlutterDownloader.enqueue( url: downloadUrl, savedDir: savePath, showNotification: true, // show download progress in status bar (for Android) openFileFromNotification: true, // click on notification to opden downloaded file (for Android) );}@overrideWidget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.title), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ /* Text('getApplicationDocumentsDirectory:' + pathloacal), Text('getExternalStorageDirectory:' + pathexternal),*/ RaisedButton( child: Text("點我下載文件"), onPressed: () { // 執行下載操作 _doDownloadOperation(); }, ), ], ), ), );}

總結

以上是生活随笔為你收集整理的android 读写文件权限_flutter 文件下载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。