gpt4 book ai didi

android - 请求服务许可。安卓中号

转载 作者:行者123 更新时间:2023-12-05 05:24:17 26 4
gpt4 key购买 nike

我正在为 M 开发 Android 许可。

在我的 Activity 应用程序中,我正在启动一项服务,我在其中使用以下相机代码。

服务中开启摄像头代码

cameraManager.openCamera(frontFacingCameraId, stateCallback, null);

我检查了一些文档,发现我无法在服务中请求权限,我需要在 Activity 中请求权限。所以我在我的 Activity 中请求许可。

请求权限的 Activity

if (PermissionUtil.getCameraPermission(this)) {
Debug.d(TAG, "相机权限——权限已存在");
performRecordingAction();
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case PermissionUtil.SDK__CAMERA_PERMISSION:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Debug.d(TAG, "Granted -- Camera Permission");
performRecordingAction();
} else {
Debug.d(TAG, "Denied -- Camera Permission");
// permission denied, boo! Disable the
// functionality that depends on this permission.
}
break;
}
}

PermissionUtil

public static boolean getCameraPermission(Activity activity) {
Debug.d(TAG, "getCameraPermission");
int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.CAMERA);

if (permission != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.CAMERA)) {
Debug.d(TAG, "Already Denied -- Camera Permission");
return false;
} else {
Debug.d(TAG, "Request Camera Permission");
ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.CAMERA}, SDK__CAMERA_PERMISSION);
return false;
}
} else {
return true;
}
}

但是在上面的服务中它仍然抛出安全异常的错误。

谁能指出我哪里出错了?有没有办法向服务请求许可?

最佳答案

您不能从服务请求权限,因为您需要系统提供的回调的 Activity 上下文。此外,权限请求是从您的应用程序异步运行的。另请参阅 requestPermissions() 中的文档 >>LINK :

This method may start an activity allowing the user to choose whichpermissions to grant and which to reject. Hence, you should beprepared that your activity may be paused and resumed. Further,granting some permissions may require a restart of you application. Insuch a case, the system will recreate the activity stack beforedelivering the result to onRequestPermissionsResult(int, String[],int[]).

服务只能在运行时检查他是否拥有所需的权限,然后调整他的行为。

关于android - 请求服务许可。安卓中号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35150298/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com