繁体   English   中英

如何获得安卓<shared-storage> Qt 的路径?

[英]How to get the android <shared-storage> path from Qt?

我不得不在 Google Play 控制台中使用我的应用程序(用 Qt 开发)上传一个单独的扩展文件。 这是一个简单的 rcc 文件。 上传后我有文件名(它显示在谷歌控制台页面上)。 但我似乎在 Android 文档页面( http://developer.android.com/google/play/expansion-files.html#StorageLocation )上找不到任何有关如何获取共享存储路径(如前所述)的信息)。

我确实遇到了这个问题( 如何使用 Qt 添加 android 扩展文件),用户似乎已经解决了这个问题,但没有提供有关如何获取共享存储路径的任何详细信息。

我已经解决了:

我使用qt rcc工具将包含大文件的qrc转换为二进制文件,然后我使用以下代码从Qt Android Activity调用正确的方法并检索扩展文件的正确路径:

QAndroidJniObject mediaDir = QAndroidJniObject::callStaticObjectMethod("android/os/Environment", "getExternalStorageDirectory", "()Ljava/io/File;");
QAndroidJniObject mediaPath = mediaDir.callObjectMethod( "getAbsolutePath", "()Ljava/lang/String;" );
QAndroidJniObject activity = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;");
QAndroidJniObject package = activity.callObjectMethod("getPackageName", "()Ljava/lang/String;");

QString dataAbsPath = mediaPath.toString()+"/Android/obb/"+package.toString()+"/yourExpansionFileName.obb";

QAndroidJniEnvironment env; // Don't know what this is for ? 
if (env->ExceptionCheck()) { env->ExceptionClear(); } // Or this...?

bool loadResource = QResource::registerResource(dataAbsPath);

不要忘记在你的应用程序中添加#include <QAndroidJniEnvironment> (以及pro文件中的QT += androidextras ),并最后将此权限添加到清单(因为扩展文件位于外部存储中):

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

在加载之前我没有检查文件是否存在(我测试的每个设备都是直接工作),但是android文档说你可能需要手动下载它。 上传扩展文件也有一些问题,你只能用第二个apk提交添加它们(在谷歌播放中)。

此代码可能对您有所帮助。

QStringList systemEnvironment = QProcess::systemEnvironment();

寻找

  1. EXTERNAL_STORAGE = /存储/模拟/遗留
  2. EXTERNAL_ADD_STORAGE = /存储/ external_SD
  3. SECONDARY_STORAGE = /存储/ external_SD
  4. ...

这段代码对我有用

 QString s = QStandardPaths::writableLocation(QStandardPaths::movieLoaction);
QDir MyDir;
s = s + "/MyFolder"
MyDir.mkdir(s);

在您的 android 设备中,如果没有添加此权限,则必须检查应用程序的存储权限,然后运行应用程序。

- 祝你好运 -

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM