AusweisApp2/src/global/BuildHelper.cpp

79 lines
1.4 KiB
C++
Raw Normal View History

2017-07-03 09:30:10 +02:00
/*
* \copyright Copyright (c) 2014 Governikus GmbH & Co. KG
*/
#include "BuildHelper.h"
2017-07-03 09:33:28 +02:00
#ifdef Q_OS_ANDROID
#include "VersionNumber.h"
#include <QAndroidJniEnvironment>
#include <QAndroidJniObject>
#include <QtAndroid>
#endif
2017-07-03 09:30:10 +02:00
using namespace governikus;
const char* BuildHelper::mDateTime = __DATE__ " / " __TIME__;
2017-07-03 09:33:28 +02:00
#ifdef Q_OS_ANDROID
int BuildHelper::getVersionCode()
{
2017-09-15 10:23:30 +02:00
return getVersionCode(getPackageName());
2017-07-03 09:33:28 +02:00
}
int BuildHelper::getVersionCode(const QString& pPackageName)
{
static int version_code = -1;
if (version_code == -1)
{
QAndroidJniEnvironment env;
auto context = QtAndroid::androidContext();
auto manager = context.callObjectMethod("getPackageManager",
"()Landroid/content/pm/PackageManager;");
if (manager.isValid())
{
const auto& str = QAndroidJniObject::fromString(pPackageName);
auto info = manager.callObjectMethod("getPackageInfo",
"(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;",
str.object<jstring>(), 0);
if (info.isValid())
{
version_code = info.getField<jint>("versionCode");
}
}
if (env->ExceptionCheck())
{
env->ExceptionDescribe();
env->ExceptionClear();
}
}
return version_code;
}
2017-09-15 10:23:30 +02:00
QString BuildHelper::getPackageName()
{
auto context = QtAndroid::androidContext();
auto name = context.callObjectMethod("getPackageName", "()Ljava/lang/String;");
if (name.isValid())
{
return name.toString();
}
return QString();
}
2017-07-03 09:33:28 +02:00
#endif