从视图中请求相机权限
Requesting camera permissions from within a View
我有一个自定义的 Android SurfaceView
,我用它来显示摄像机的视频流。为了访问相机,我需要从用户那里获得相应的权限。
Android documentation 解释了如何使用方法 checkSelfPermission
、shouldShowRequestPermissionRationale
和
requestPermissions
.
现在,我想做的是直接从自定义视图中请求权限(请不要试图告诉我这是不好的做法等)。
我没能做到这一点的原因是似乎没有办法告诉Android在哪里可以找到ActivityCompat.OnRequestPermissionsResultCallback
回调。似乎 Android 自动期望它成为托管我修改后的视图的 Activity
或 Fragment
的一部分。
我错过了一个 <whatever>.setCallback(this)
调用,我可以在直接在视图上实现 ActivityCompat.OnRequestPermissionsResultCallback
后添加到我的自定义视图代码中。
是否真的没有从 Android 视图中请求权限的简单方式?
It seems that Android automatically expects it to be part of the Activity or Fragment that hosts my modified view
正确。
Is there really no non-hacky-looking way to request permissions from within an Android View?
正确。
将 onPermissionResult 方法放在调用它的 activity/fragment 中,并在视图“proceedAfterPermission”中创建一个 public 方法,并从父 activity/fragment.
为了向视图请求许可,您可以将上下文从 activity/fragment 传递到视图,只需将上下文变量设置为 public.
我有一个自定义的 Android SurfaceView
,我用它来显示摄像机的视频流。为了访问相机,我需要从用户那里获得相应的权限。
Android documentation 解释了如何使用方法 checkSelfPermission
、shouldShowRequestPermissionRationale
和
requestPermissions
.
现在,我想做的是直接从自定义视图中请求权限(请不要试图告诉我这是不好的做法等)。
我没能做到这一点的原因是似乎没有办法告诉Android在哪里可以找到ActivityCompat.OnRequestPermissionsResultCallback
回调。似乎 Android 自动期望它成为托管我修改后的视图的 Activity
或 Fragment
的一部分。
我错过了一个 <whatever>.setCallback(this)
调用,我可以在直接在视图上实现 ActivityCompat.OnRequestPermissionsResultCallback
后添加到我的自定义视图代码中。
是否真的没有从 Android 视图中请求权限的简单方式?
It seems that Android automatically expects it to be part of the Activity or Fragment that hosts my modified view
正确。
Is there really no non-hacky-looking way to request permissions from within an Android View?
正确。
将 onPermissionResult 方法放在调用它的 activity/fragment 中,并在视图“proceedAfterPermission”中创建一个 public 方法,并从父 activity/fragment.
为了向视图请求许可,您可以将上下文从 activity/fragment 传递到视图,只需将上下文变量设置为 public.