做网站网站多久会被抓,做网站放广告,七牛怎么做网站服务器,软文写作技巧及范文1-先介绍写这篇博客的时候使用的系统环境 QT版本#xff1a;QT5.15.2安卓系统#xff1a;Android 11 (博主使用的是RK3568 官网下载的android 11 系统)NDK#xff1a;21.3.6528147CMAKE#xff1a;3.21.1SDK#xff1a;28 #xff08;很重要#xff09;2-在此环境下QT5.15.2安卓系统Android 11 (博主使用的是RK3568 官网下载的android 11 系统)NDK21.3.6528147CMAKE3.21.1SDK28 很重要2-在此环境下通过QTcreator进行调试安卓机器平板也可以调试下面介绍Demo 直接通过QtCreator创建的demo是允许获得所有文件权限的什么都不用改可在android 系统设置上赋予权限如果想要直接获取权限通过打开软件提示的方式可通过下面代码实现 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;
} 当非我使用系统环境时 SDK 28,在此情况下编译的APK是无法获取到所有文件权限的只能获取媒体文件权限通过修改AndroidManifest.xml 也没有任何用处当然如果都跟我的环境不一样可以尝试下面方式获取权限 修改XML文件 uses-permission android:nameandroid.permission.MANAGE_EXTERNAL_STORAGE/uses-permission android:nameandroid.permission.WRITE_EXTERNAL_STORAGE/uses-permission android:nameandroid.permission.READ_EXTERNAL_STORAGE /3-USB权限相关权限介绍
在获取到所有文件权限的时候已经可以向USB内读写文件此时USB挂载在/stroage 路径下但是该路径需要root权限才可以进行扫描读取USB在系统内的名字可通过QDIR进行读取如果没有root权限可通过下面方式进行获取USB路径但是不一定能够成功以下只是介绍最好还是将/storage 赋予权限或者直接将系统root掉 1.libusb可去githup查看示例下面是链接
https://github.com/libusb/libusb/tree/master2.qt调用java的方式上述方式也需要此条件但不是下面代码 QAndroidJniObject context QtAndroid::androidActivity();if (context.isValid()) {QAndroidJniObject usbManager context.callObjectMethod(getSystemService,(Ljava/lang/String;)Ljava/lang/Object;,QAndroidJniObject::getStaticObjectField(android/content/Context,USB_SERVICE,Ljava/lang/String;).objectjstring());QAndroidJniObject deviceList usbManager.callObjectMethod(getDeviceList,()Ljava/util/HashMap;);QAndroidJniEnvironment env;jobject jMap deviceList.object();jclass mapClass env-GetObjectClass(jMap);jmethodID entrySet env-GetMethodID(mapClass, entrySet, ()Ljava/util/Set;);jobject jEntrySet env-CallObjectMethod(jMap, entrySet);jclass setClass env-FindClass(java/util/Set);jmethodID iterator env-GetMethodID(setClass, iterator, ()Ljava/util/Iterator;);jobject jIterator env-CallObjectMethod(jEntrySet, iterator);jclass iteratorClass env-FindClass(java/util/Iterator);jmethodID hasNext env-GetMethodID(iteratorClass, hasNext, ()Z);jmethodID next env-GetMethodID(iteratorClass, next, ()Ljava/lang/Object;);jclass entryClass env-FindClass(java/util/Map$Entry);jmethodID getKey env-GetMethodID(entryClass, getKey, ()Ljava/lang/Object;);jmethodID getValue env-GetMethodID(entryClass, getValue, ()Ljava/lang/Object;);while (env-CallBooleanMethod(jIterator, hasNext)) {jobject jEntry env-CallObjectMethod(jIterator, next);jstring jDeviceName static_castjstring(env-CallObjectMethod(jEntry, getKey));jobject jDevice env-CallObjectMethod(jEntry, getValue);QAndroidJniObject device(jDevice);jint vendorId device.callMethodjint(getVendorId, ()I);jint productId device.callMethodjint(getProductId, ()I);QAndroidJniObject manufacturer device.callObjectMethod(getDeviceName, ()Ljava/lang/String;);QAndroidJniObject productname device.callObjectMethod(getProductName, ()Ljava/lang/String;);jstring permissionString env-NewStringUTF(org.qtproject.socomate.USB_PERMISSION);}}