Qt for android 动态权限申请

       从Android5.0以后开始,谷歌开始限制了android中系统的运行时权限,对于涉及到用户隐私的权限则需要开发者自己动态的去申请,并做好相应的处理 由于android 队伍的壮大,延伸出了很多方便使用的第三方库,在这里就不累述,但Qt作为一个跨平台的语言针对这点的更新还是不太及时,需要我们自己是实现,主要实现方案这里列举两种

一)Qt c++ 通过jni 调用java方法 采用android原生的方法进行实现

二)通过本文中的工具类实现 实现的前提是Qt版本需要在5.8以上

第一步:

在项目的pro文件中 

QT += androidextras

QT += core-private

HEADERS += permissions.h 

SOURCES += permissions.cpp 


第二步:添加工具类文件

工具类下载地址 单击下载后,添加到自己项目中 

第三步:调用工具类方法申请权限

bool checkPermission() { 
    QtAndroid::PermissionResult r = QtAndroid::checkPermission("android.permission.WRITE_EXTERNAL_STORAGE");  
    if(r == QtAndroid::PermissionResult::Denied) { 
        QtAndroid::requestPermissionsSync( QStringList() << "android.permission.WRITE_EXTERNAL_STORAGE" );  
        r = QtAndroid::checkPermission("android.permission.WRITE_EXTERNAL_STORAGE");  
        if(r == QtAndroid::PermissionResult::Denied) { 
             return false; 
        }  
   } 
   return true;
} 
这里以读写SDCard权限为例 申请,在使用的地方调用该方法即可验证。

本文并非原创,由于解决此问题,搜寻很久,找到解决方法,原文地址: https://bugreports.qt.io/browse/QTBUG-50759 希望能帮遇到相关问题的人,有问题请留言。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值