Android因为权限问题而杀死Qt应用程序

Android kill the Qt app because of permission issue

本文关键字:Qt 应用程序 因为 权限 问题 Android      更新时间:2023-10-16

>tham 5分钟前

尝试使用 Qt5.12.3 和 opencv4.1.2(来自 opencv 发布页面的 android 预构建版本(构建应用程序。

  • 手机 : 索尼xperia XA1 至尊
  • Qt: 5.12.3
  • NDK : r19c
  • 最低目标:24
  • 最大目标:28
  • Android 库链接到:libcamera2ndk.so 和 libmediandk.so,我链接到 api 28 的库,而不是 24(android-28\arch-arm\usr\lib(
  • 权限:
  • 拱门 : 阿梅亚比-V7A

因为我需要实时处理相机的帧,所以我使用 NdkCameraManager 捕获相机的屏幕,但这会导致权限问题

错误消息:

W RenderThread: type=1400 audit(0.0:353504): avc: denied { read } for name="perf_ioctl" dev="proc" ino=4026533700 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0

编辑:额外的所以我添加到项目中的文件

contains(ANDROID_TARGET_ARCH, armeabi-v7a) {
ANDROID_EXTRA_LIBS = 
C:/Users/yyyy/programs/Qt/android_camera/../../../3rdLibs/Android/android-ndk-r19c-windows-x86_64/android-ndk-r19c/platforms/android-28/arch-arm/usr/lib/libcamera2ndk.so 
C:/Users/yyyy/programs/Qt/android_camera/../../../3rdLibs/Android/android-ndk-r19c-windows-x86_64/android-ndk-r19c/platforms/android-28/arch-arm/usr/lib/libmediandk.so 
C:/Users/yyyy/programs/Qt/android_camera/../../../3rdLibs/opencv/opencv_4.1.2-android-sdk/sdk/native/libs/armeabi-v7a/libopencv_java4.so
}

也许我错过了一些文件?

您需要要求用户在运行时授予对相机的访问权限。 因此,使用Qt Android Extras模块中的QtAndroid, 在首次访问相机之前运行此代码

auto  result = QtAndroid::checkPermission(QString("android.permission.CAMERA"));
if(result == QtAndroid::PermissionResult::Denied){
QtAndroid::PermissionResultMap resultHash = QtAndroid::requestPermissionsSync(QStringList({"android.permission.CAMERA"}));
if(resultHash["android.permission.CAMERA"] == QtAndroid::PermissionResult::Denied)
// do whatever need if denied
else
// do whatever need if granted
}