【发布时间】:2016-06-20 05:22:03
【问题描述】:
我正在开发 APP,我可以在其中选择录制或选择已存储的视频。我能够毫无问题地执行这些操作。但是当我关闭 Activity 并再次打开它时,我的 Activity 无法再次访问 URI。
我得到了例外: D/MediaPlayer:setDataSource SecurityException 发生:
java.lang.SecurityException: Permission Denial: opening provider com.android.providers.media.MediaDocumentsProvider from ProcessRecord{2e396c8 6917:com.rahul.android.casteeng/u0a145} (pid=6917, uid=10145) requires android.permission.MANAGE_DOCUMENTS or android.permission.MANAGE_DOCUMENTS
at android.os.Parcel.readException(Parcel.java:1540)
at android.os.Parcel.readException(Parcel.java:1493)
at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:3654)
at android.app.ActivityThread.acquireProvider(ActivityThread.java:5299)
at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2966)
at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1495)
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1115)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:970)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:897)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1108)
at android.widget.VideoView.openVideo(VideoView.java:376)
at android.widget.VideoView.access$2100(VideoView.java:73)
at android.widget.VideoView$7.surfaceCreated(VideoView.java:657)
at android.view.SurfaceView.updateWindow(SurfaceView.java:682)
at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:200)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:921)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2214)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1230)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6748)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777)
at android.view.Choreographer.doCallbacks(Choreographer.java:590)
at android.view.Choreographer.doFrame(Choreographer.java:560)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6117)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
我已经在 AndroidMenifest.xml 中配置权限为
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
任何建议都会有所帮助。提前致谢!
【问题讨论】:
-
您是否针对 API 23 进行编译?如果是,那么您需要运行时权限
-
它说你需要“android.permission.MANAGE_DOCUMENTS”添加它..
-
您需要手动向用户请求权限..例如参见..:androidexampleblog.wordpress.com/2016/06/14/…
-
@SohailZahid。我正在针对 API 21 进行编译。
标签: android android-permissions