Java 如何为片段中的摄影机授予权限
您好,我有一个简单的应用程序,我正在使用相机,所以用户必须为相机授予权限 到目前为止,我的应用程序只有Java 如何为片段中的摄影机授予权限,java,android,Java,Android,您好,我有一个简单的应用程序,我正在使用相机,所以用户必须为相机授予权限 到目前为止,我的应用程序只有活动,但现在我想使用片段。 我得到了一个片段,叫做FragmentScanCode(这里我想用相机) 这也是第一个片段,所以我想在应用程序开始时授予权限 这是我的代码,来自MainActivity,它工作正常 final int RequestCameraPermissionID = 1001; onRequestPermissionsResult: @Override pub
活动
,但现在我想使用片段
。
我得到了一个片段,叫做FragmentScanCode
(这里我想用相机)
这也是第一个片段,所以我想在应用程序开始时授予权限
这是我的代码,来自MainActivity
,它工作正常
final int RequestCameraPermissionID = 1001;
onRequestPermissionsResult
:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case RequestCameraPermissionID: {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.CAMERA},
RequestCameraPermissionID);
//return;
}
try {
cameraSource.start(cameraView.getHolder());
} catch (IOException e) {
e.printStackTrace();
}
}
}
break;
}
}
我不能在我的片段中使用它,因为ActivityCompat
是否有任何可能的解决方案来授予对片段的权限
这是我在developer.google.com文档上尝试过的,它是有效的
这是我的工作代码。
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions,
int[] grantResults) {
switch (requestCode){
case RequestCameraPermissionID: {
if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
if(getActivity().checkSelfPermission(Manifest.permission.CAMERA) !=
PackageManager.PERMISSION_GRANTED) {
requestPermissions(
new String[]{Manifest.permission.CAMERA},
RequestCameraPermissionID);
//cameraSource.start(cameraView.getHolder());
return;
}
}
captureCode();
}
break;
}
}
还有我的函数captureCode()
这种行为似乎出现在v4片段支持类requestPermissions in Fragment中。Activity/FragmentCompat实现适用于希望在API级别11到23之间使用具有扩展功能的本机类的人 也许对你有帮助。在片段上调用requestPermissions()
可能重复,并在同一片段中重写onRequestPermissionsResult()
。@Ashish我尝试使用doc(编辑了我的问题)但仍然不起作用。@commonware我应该在哪里调用此方法?
try {
if (getActivity().checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(
new String[]{Manifest.permission.CAMERA},
RequestCameraPermissionID);
return;
}
cameraSource.start(cameraView.getHolder());
} catch (IOException e) {
e.printStackTrace();
}