奇怪的服务权限行为
Strange service permission behaviour
我有一个 SendActivity,它启动了一个 UploadService。
问题发生在我让 SendActivity 然后立即启动另一个 activity 并自行完成时。 UploadService 从内容提供者那里获取应该上传的文件。但是,当 SendActivity 不是我在服务试图通过提供者访问文件的那一刻的前台时,我得到了 "Permission Denial" 尽管我的清单中列出了权限。
java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaDocumentsProvider uri content://com.android.providers.media.documents/document/image%3A24669 from pid=28913, uid=10441 requires android.permission.MANAGE_DOCUMENTS, or grantUriPermission()
at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:646)
有人可以帮我吗?
我的猜测是您将 Uri
从 SendActivity
传递到 UploadService
。 SendActivity
可能有权阅读该内容,但 UploadService
没有。
在用于启动 UploadService
的 Intent
中,调用 addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
将读取权限从 SendActivity
转移到 UploadService
,看看是否有帮助。如果没有,那么可能 SendActivity
也 没有读取权限,在这种情况下,您需要查看如何获得 Uri
第一名.
我有一个 SendActivity,它启动了一个 UploadService。
问题发生在我让 SendActivity 然后立即启动另一个 activity 并自行完成时。 UploadService 从内容提供者那里获取应该上传的文件。但是,当 SendActivity 不是我在服务试图通过提供者访问文件的那一刻的前台时,我得到了 "Permission Denial" 尽管我的清单中列出了权限。
java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaDocumentsProvider uri content://com.android.providers.media.documents/document/image%3A24669 from pid=28913, uid=10441 requires android.permission.MANAGE_DOCUMENTS, or grantUriPermission()
at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:646)
有人可以帮我吗?
我的猜测是您将 Uri
从 SendActivity
传递到 UploadService
。 SendActivity
可能有权阅读该内容,但 UploadService
没有。
在用于启动 UploadService
的 Intent
中,调用 addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
将读取权限从 SendActivity
转移到 UploadService
,看看是否有帮助。如果没有,那么可能 SendActivity
也 没有读取权限,在这种情况下,您需要查看如何获得 Uri
第一名.