如何处理Activity和Fragment之外的权限请求?
我正在开发需要访问外部存储的自定义复合视图。 我如何在不涉及外部参与方的情况下执行权限处理,即活动或片段?
我得到,我可以使用视图的上下文请求权限,但我怎样才能处理视图内的onRequestPermissionsResult()
? 它甚至有可能吗?
如果这不可能,那么处理这种事情的最优雅的解决方案是什么?
我正在开发需要访问外部存储的自定义复合视图
恕我直言,这是一个架构错误。 View
用于向用户显示内容,有时用于收集低级输入事件并将其转换为高级构造(例如点击,滑动)。 View
不应该与文件,数据库等有任何关联。请参阅MVC,MVP,MVVM和类似的GUI架构模式。
WebView
不遵守这一点,因此导致问题(例如,在主应用程序线程上执行磁盘I / O)。
我如何在不涉及外部参与方的情况下执行权限处理,即活动或片段?
你不能。 活动或片段有责任请求权限,可能在您的视图需要此数据之前。
处理这样的事情最优雅的解决方案是什么?
将此View
的数据访问部分提取到由活动或片段管理的其他内容中,其中可以管理与该数据访问关联的线程,权限和其他工作。
只有在活动和片段中才有可能。
你可以做的是在View中复制public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
,并在Context或者Activity所在的Activity或Fragment对应的方法中调用该方法。
上一篇: How to handle permission requests outside Activity and Fragment?