我必须在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);
Run Code Online (Sandbox Code Playgroud)
不要忘记添加#include <QAndroidJniEnvironment>您的应用程序(以及QT += androidextras在pro文件中),并最后将此权限添加到清单(因为扩展文件位于外部存储中):
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
Run Code Online (Sandbox Code Playgroud)
在加载之前我没有检查文件是否存在(我测试的每个设备都是直接工作),但是android文档说你可能需要手动下载它.上传扩展文件也有一些问题,你只能用第二个apk提交添加它们(在谷歌播放中).
| 归档时间: |
|
| 查看次数: |
2837 次 |
| 最近记录: |