我不得不在Google Play控制台上用我的应用程序(用Qt开发)上传一个单独的扩展文件。这是一个简单的rcc文件。上传后我有文件的名称(它显示在google控制台页面上)。但我似乎在Android文档页面(http://developer.android.com/google/play/expansion-files.html#StorageLocation)上找不到任何关于如何获取共享存储路径(如上所述)的信息。
我确实遇到了这个问题(How to add android expansion files using Qt),用户似乎已经解决了这个问题,但没有给出如何获取共享存储路径的任何细节。
发布于 2015-08-10 11:16:04
我已经解决了:
我使用qt rcc tool将包含大文件的qrc转换为二进制文件,然后使用以下代码从expansion活动中调用适当的方法并检索到扩展文件的正确路径:
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时添加它们(在Google play中)。
发布于 2016-02-04 02:55:33
这段代码可能会对你有所帮助。
QStringList systemEnvironment = QProcess::systemEnvironment();寻找
发布于 2022-01-25 11:45:15
这段代码对我来说很有效:
QString s = QStandardPaths::writableLocation(QStandardPaths::movieLoaction);
QDir MyDir;
s = s + "/MyFolder"
MyDir.mkdir(s);在Android设备中,您必须检查应用程序的存储权限。如果没有添加此权限,则运行应用程序。
https://stackoverflow.com/questions/31910050
复制相似问题