Android App重启后失去使用权限

时间:2015-12-05 13:15:11

标签: android apk android-permissions

我一直在制作一个简单的音板应用程序,我遇到了一个奇怪的问题。 该应用程序首次安装时工作正常,在此之后的任何时间,只有在安装的设备重新启动后才开始出现问题。

设备重启后,应用程序似乎松开了其中一个

具体做法是:

<uses-permission android:name="android.permission.MANAGE_DOCUMENTS"/>

以下是我看到的赌注:

 FATAL EXCEPTION: main
 Process: com.wochstudios.soundboard, PID: 10105
 java.lang.SecurityException: Permission Denial: opening provider com.android.providers.media.MediaDocumentsProvider from ProcessRecord{9f2b05a 10105:com.wochstudios.soundboard/u0a155} (pid=10105, uid=10155) requires android.permission.MANAGE_DOCUMENTS or android.permission.MANAGE_DOCUMENTS
    at android.os.Parcel.readException(Parcel.java:1546)
    at android.os.Parcel.readException(Parcel.java:1499)
    at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:3361)
    at android.app.ActivityThread.acquireProvider(ActivityThread.java:4709)
    at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2611)
    at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1440)
    at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1063)
    at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:921)
    at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:848)
    at com.wochstudios.soundboard.Utils.SoundPlayer.getFileDescriptorFromUri(SoundPlayer.java:55)
    at com.wochstudios.soundboard.Utils.SoundPlayer.playSound(SoundPlayer.java:25)
    at com.wochstudios.soundboard.Controllers.SoundboardController.playSound(SoundboardController.java:26)
    at com.wochstudios.soundboard.DisplayFragments.SoundboardFragment$ListViewClickListener.onItemClick(SoundboardFragment.java:160)
    at android.widget.AdapterView.performItemClick(AdapterView.java:305)
    at android.widget.AbsListView.performItemClick(AbsListView.java:1146)
    at android.widget.AbsListView$PerformClick.run(AbsListView.java:3053)
    at android.widget.AbsListView$3.run(AbsListView.java:3860)
    at android.os.Handler.handleCallback(Handler.java:746)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5343)
    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:907)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:702)

我将min和target sdk设置为19,并且我一直在测试使用带有API 22的设备。

我一直在抨击所有试图解决这个问题的人,但是还没有运气好。

我已经尝试在清单中两次列出权限,更新应用版本代码和名称,完全卸载应用并重新安装,到目前为止没有任何工作。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您从其他应用获得的Uri可能是短暂的,就您可以访问其内容的时长而言。最好的比喻是网站上文件的URL - 如果该URL需要经过身份验证的会话,只要用户的会话仍然存在,URL就会起作用,之后URL将不再起作用,强制执行用户再次登录。

如果您在Android 4.4+上使用the Storage Access Framework APIs来获取此Uri,则可以尝试获取可保留的Uri权限,这些权限可能会允许您访问Uri {1}}更长时间。