如何处理Activity和Fragment之外的权限请求?

Mag*_*s W 7 android android-custom-view android-permissions android-external-storage android-6.0-marshmallow

我正在开发一个需要访问外部存储的自定义复合视图.如何在不涉及外部各方(即活动或片段)的情况下实施权限处理?

我知道我可以使用View的上下文请求权限,但是我如何处理onRequestPermissionsResult()View内部?它甚至可能吗?

如果不可能,处理这样的事情最优雅的解决方案是什么?

Com*_*are 5

我正在开发一个需要访问外部存储的自定义复合视图

恕我直言,这是一个架构错误.A View用于向用户显示内容,有时用于收集低级输入事件并将其转换为高阶构造(例如,点击,滑动).A View不应与文件,数据库等有任何连接.请参阅MVC,MVP,MVVM和类似的GUI架构模式.

WebView,不遵守这一点,会导致问题(例如,在主应用程序线程上执行磁盘I/O).

如何在不涉及外部各方(即活动或片段)的情况下实施权限处理?

你不能.活动或片段负责请求许可,大概是在您的视图需要此数据之前.

什么是最优雅的解决方案来处理这样的事情?

将此数据访问部分提取View到由活动或片段管理的其他内容中,其中可以管理与该数据访问关联的线程,权限和其他工作.