如何解决失败打开流READ_EXTERNAL_STORAGE Flutter
在应用程序中出现此错误。只需在空白处轻按,即可将其扔到控制台中。
W/ClipData( 7375): Failure opening stream
W/ClipData( 7375): java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/file/119902 from pid=7375,uid=10423 requires android.permission.READ_EXTERNAL_STORAGE,or grantUriPermission()
W/ClipData( 7375): at android.os.Parcel.createException(Parcel.java:1950)
W/ClipData( 7375): at android.os.Parcel.readException(Parcel.java:1918)
W/ClipData( 7375): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
W/ClipData( 7375): at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:146)
W/ClipData( 7375): at android.content.ContentProviderProxy.openTypedAssetFile(ContentProviderNative.java:698)
W/ClipData( 7375): at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1460)
W/ClipData( 7375): at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1404)
W/ClipData( 7375): at android.content.ClipData$Item.coerceToText(ClipData.java:351)
W/ClipData( 7375): at io.flutter.plugin.platform.PlatformPlugin.getClipboardData(PlatformPlugin.java:278)
W/ClipData( 7375): at io.flutter.plugin.platform.PlatformPlugin.access$700(PlatformPlugin.java:24)
W/ClipData( 7375): at io.flutter.plugin.platform.PlatformPlugin$1.getClipboardData(PlatformPlugin.java:81)
W/ClipData( 7375): at io.flutter.embedding.engine.systemchannels.PlatformChannel$1.onMethodCall(PlatformChannel.java:141)
W/ClipData( 7375): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:230)
W/ClipData( 7375): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
W/ClipData( 7375): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:692)
W/ClipData( 7375): at android.os.MessageQueue.nativePollOnce(Native Method)
W/ClipData( 7375): at android.os.MessageQueue.next(MessageQueue.java:326)
W/ClipData( 7375): at android.os.Looper.loop(Looper.java:160)
W/ClipData( 7375): at android.app.ActivityThread.main(ActivityThread.java:6854)
W/ClipData( 7375): at java.lang.reflect.Method.invoke(Native Method)
W/ClipData( 7375): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
W/ClipData( 7375): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:860)
我试图像这样使用Permissin_Handler软件包;
Future<bool> permissionGetter(BuildContext context) async {
if (await Permission.contacts.request().isGranted) {
return true;
}
Map<Permission,PermissionStatus> statuses = await [
Permission.storage,].request();
print(statuses[Permission.location]);
return false;
}
从此FutureBuilder;
@override
Widget build(BuildContext context) {
SizeConfig().init(context);
return FutureBuilder(
future: permissionGetter(context),builder: (context,builder){
print(builder);
if(builder.connectionState == ConnectionState.done){
print(builder);
return MaterialApp(
initialRoute: RegisterScreen.id,routes: {
RegisterScreen.id: (context) => RegisterScreen(),LoginScreen.id: (context) => LoginScreen()
},);
}
return Text("HIII");
},);
}
但是print(builder)
只给了我这两行;
(在声明之前)
I/flutter ( 7375): AsyncSnapshot<bool>(ConnectionState.waiting,null,MissingPluginException(No implementation found for method requestPermissions on channel flutter.baseflow.com/permissions/methods))
(在if语句中)
I/flutter ( 7375): AsyncSnapshot<bool>(ConnectionState.done,MissingPluginException(No implementation found for method requestPermissions on channel flutter.baseflow.com/permissions/methods))
我目前还没有使用本地存储,但是将来我打算使用。如何获得许可并解决此问题?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。