从视图中请求相机权限

时间:2019-05-16 15:14:39

标签: android android-permissions

我有一个自定义的Android SurfaceView,用于显示摄像机的视频流。为了访问摄像机,我需要从用户那里获得相应的权限。

Android documentation解释了如何使用方法checkSelfPermissionshouldShowRequestPermissionRationalerequestPermissions

现在,我想做的是直接从自定义视图中请求权限(请不要试图让我知道这是不好的做法,等等)。

之所以无法实现这一目标,是因为似乎无法告诉Android在哪里可以找到ActivityCompat.OnRequestPermissionsResultCallback回调。似乎Android会自动希望它成为承载我的修改视图的ActivityFragment的一部分。

我错过了一个<whatever>.setCallback(this)调用,可以直接在视图上实现ActivityCompat.OnRequestPermissionsResultCallback后添加到自定义视图代码中。

真的没有从Android View内请求权限的看上去很朴实的方法吗?

2 个答案:

答案 0 :(得分:3)

  

Android似乎自动希望它成为承载我的修改视图的Activity或Fragment的一部分

正确。

  

真的没有从Android View内请求权限的看上去很朴实的方法吗?

正确。

答案 1 :(得分:1)

将onPermissionResult方法放在调用它的活动/片段中,并在“ proceedAfterPermission”视图内创建一个公共方法,然后从父活动/片段中调用它。

要从视图中请求权限,您可以将上下文从活动/片段传递到视图,只需将Context变量设为公开。