【问题标题】:Android kill the Qt app because of permission issue [closed]由于权限问题,Android杀死了Qt应用程序[关闭]
【发布时间】:2020-04-02 06:55:16
【问题描述】:

5 分钟前

尝试使用 Qt5.12.3 和 opencv4.1.2(来自opencv release page 的android prebuild 版本)构建应用程序。

  • 手机:索尼 xperia XA1 Ultra
  • Qt:5.12.3
  • NDK:r19c
  • 最低目标:24
  • 最大目标:28
  • Android 库链接到:libcamera2ndk.so 和 libmediandk.so,我链接到 api 28 的库,而不是 24(android-28\arch-arm\usr\lib)
  • 权限:
  • arch : armeabi-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

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

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
}

也许我错过了一些 so 文件?

【问题讨论】:

  • 主题和信息有误,应用因其他原因崩溃

标签: android c++ opencv qt5


【解决方案1】:

您需要在运行时要求用户授予对摄像头的访问权限。 因此,使用来自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
    }

【讨论】:

  • 谢谢,我手动启用了相机权限,但它仍然崩溃。在我尝试打开相机之前应用程序崩溃了,我想这可能是因为我错过了一些.so文件
  • 看看developer.android.com/ndk/reference/group/…反正我觉得问题出在别的地方
  • 你是对的,问题是 ACameraManager_getCameraIdList 使应用程序崩溃,将打开一个新帖子询问为什么,因为它们是不同的问题。谢谢
猜你喜欢
  • 1970-01-01
  • 2017-04-20
  • 2014-05-22
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-04
  • 1970-01-01
相关资源
最近更新 更多