我有一个自定义的Android SurfaceView
,用于显示摄像机的视频流。为了访问摄像机,我需要从用户那里获得相应的权限。
Android documentation解释了如何使用方法checkSelfPermission
,shouldShowRequestPermissionRationale
和
requestPermissions
。
现在,我想做的是直接从自定义视图中请求权限(请不要试图让我知道这是不好的做法,等等)。
之所以无法实现这一目标,是因为似乎无法告诉Android在哪里可以找到ActivityCompat.OnRequestPermissionsResultCallback
回调。似乎Android会自动希望它成为承载我的修改视图的Activity
或Fragment
的一部分。
我错过了一个<whatever>.setCallback(this)
调用,可以直接在视图上实现ActivityCompat.OnRequestPermissionsResultCallback
后添加到自定义视图代码中。
真的没有从Android View内请求权限的看上去很朴实的方法吗?
答案 0 :(得分:3)
Android似乎自动希望它成为承载我的修改视图的Activity或Fragment的一部分
正确。
真的没有从Android View内请求权限的看上去很朴实的方法吗?
正确。
答案 1 :(得分:1)
将onPermissionResult方法放在调用它的活动/片段中,并在“ proceedAfterPermission”视图内创建一个公共方法,然后从父活动/片段中调用它。
要从视图中请求权限,您可以将上下文从活动/片段传递到视图,只需将Context变量设为公开。