Android studio 颤振显示下载失败,下载100%后出现java.lang.IllegalArgumentException
我正在尝试制作一个墙纸应用程序来下载图像,但当它完成下载时显示下载失败,错误是找不到具有权限的提供商的元数据。我下载与颤振下载包。 谢谢 java.lang.IllegalArgumentException:找不到具有权限的提供程序的元数据 sagarrawatuk.fotoApp.flatter_downloader.providerAndroid studio 颤振显示下载失败,下载100%后出现java.lang.IllegalArgumentException,android-studio,flutter,Android Studio,Flutter,我正在尝试制作一个墙纸应用程序来下载图像,但当它完成下载时显示下载失败,错误是找不到具有权限的提供商的元数据。我下载与颤振下载包。 谢谢 java.lang.IllegalArgumentException:找不到具有权限的提供程序的元数据 sagarrawatuk.fotoApp.flatter_downloader.provider class _ImagePathState extends State<ImagePath> { String localPath; Future
class _ImagePathState extends State<ImagePath> {
String localPath;
Future<String> get localpath async {
final result = await Permission.storage.request();
if (result == PermissionStatus.granted) {
final localPath =
(await findLocalPath()) + Platform.pathSeparator + 'Download';
final savedDir = Directory(localPath);
bool hasExisted = await savedDir.exists();
if (!hasExisted) {
savedDir.create();
}
return localPath;
} else
return null;
}
Future<String> findLocalPath() async {
final directory = Platform.isAndroid
? await getExternalStorageDirectory()
: await getApplicationDocumentsDirectory();
return directory.path;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: myColor,
leading: IconButton(
icon: Icon(Icons.close),
onPressed: () => Navigator.of(context).pop(),
color: Colors.black,
),
actions: [
IconButton(
color: Colors.black,
icon: Icon(Icons.file_download),
onPressed: () async => DownloadTask(
taskId: await FlutterDownloader.enqueue(
url: widget.imgPath,
savedDir: await localpath,
showNotification: true)))
],
),
body: SizedBox.expand(
child: Container(
child: Stack(
children: [
Align(
alignment: Alignment.center,
child: Hero(
tag: widget.imgPath, child: Image.network(widget.imgPath)),
),
],
),
),
),
);
}
class\u ImagePathState扩展状态{
字符串本地路径;
未来获取本地路径异步{
最终结果=wait Permission.storage.request();
如果(结果==PermissionStatus.grated){
最终本地路径=
(等待findLocalPath())+Platform.pathSeparator+“下载”;
final savedDir=目录(localPath);
bool hasExisted=wait savedDir.exists();
如果(!已存在){
savedDir.create();
}
返回localPath;
}否则
返回null;
}
Future findLocalPath()异步{
最终目录=Platform.isAndroid
?等待getExternalStorageDirectory()
:等待getApplicationDocumentsDirectory();
返回directory.path;
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
背景颜色:myColor,
领先:IconButton(
图标:图标(Icons.close),
onPressed:()=>Navigator.of(context.pop(),
颜色:颜色,黑色,
),
行动:[
图标按钮(
颜色:颜色,黑色,
图标:图标(Icons.file_下载),
onPressed:()异步=>下载任务(
taskId:wait downloader.enqueue(
url:widget.imgPath,
savedDir:等待localpath,
showNotification:true)))
],
),
正文:SizedBox.expand(
子:容器(
子:堆栈(
儿童:[
对齐(
对齐:对齐.center,
孩子:英雄(
标记:widget.imgPath,子项:Image.network(widget.imgPath)),
),
],
),
),
),
);
}
在您的AndroidManifest.xml中添加提供者
<provider
android:name="vn.hunghd.flutterdownloader.DownloadedFileProvider"
android:authorities="${applicationId}.flutter_downloader.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>
见文件