我正在使用 permission_handler 包來請求 Android 上的權限。當用戶在 Permission.storage 彈出視窗中單擊“允許”時,他可以將檔案下載到下載檔案夾。(當用戶安裝應用程式時,我們將其稱為 Permission.storage。)
問題是,如果用戶在應用程式的其他流程中第一次單擊“不允許”,第二次單擊“允許”,我們仍然會收到權限被拒絕錯誤,并且用戶無法下載檔案,例如以上流量。我已經記錄并檢查了狀態的值;它以 PermissionStatus.granted 的形式出現,這是預期的。有想法該怎么解決這個嗎?
下面是錯誤日志
I/flutter(8170):無法下載檔案 FileSystemException:無法打開檔案,路徑 = '/storage/emulated/0/Download/codes.txt'(作業系統錯誤:權限被拒絕,errno = 13)
/// Permission snippet of first time
final permission =
GetPlatform.isAndroid ? Permission.storage : Permission.photos;
final status = await permission.status;
if (status != PermissionStatus.granted) {
await permission.request().isGranted;
}
/// Snippet when user clicks on download second time
final permission = Permission.storage;
final status = await permission.status;
debugPrint('>>>Status $status'); /// here it is coming as PermissionStatus.granted
if (status != PermissionStatus.granted) {
await permission.request().isGranted;
debugPrint('>>> ${await permission.status}');
}
directory = Directory('/storage/emulated/0/Download');
///perform other stuff to download file
uj5u.com熱心網友回復:
當權限處理程式包向具有功能的用戶發送請求時request(),我們在await關閉對話框后第二次檢查是否已授予權限,如果已授予權限,則執行其他操作以下載檔案,否則您可以再次發送權限請求。
/// Snippet when user clicks on download second time
final permission = Permission.storage;
final status = await permission.status;
debugPrint('>>>Status $status'); /// here it is coming as PermissionStatus.granted
if (status != PermissionStatus.granted) {
await permission.request();
if(await permission.status.isGranted){
directory = Directory('/storage/emulated/0/Download');
///perform other stuff to download file
} else {
await permission.request();
}
debugPrint('>>> ${await permission.status}');
}
directory = Directory('/storage/emulated/0/Download');
///perform other stuff to download file
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/453228.html
標籤:扑
