AusweisApp2/src/global/BuildHelper.cpp

92 lines
1.6 KiB
C++
Raw Normal View History

2017-07-03 09:30:10 +02:00
/*
2018-03-28 15:10:51 +02:00
* \copyright Copyright (c) 2014-2018 Governikus GmbH & Co. KG, Germany
2017-07-03 09:30:10 +02:00
*/
#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
2017-12-20 14:54:05 +01:00
namespace
2017-07-03 09:33:28 +02:00
{
2017-12-20 14:54:05 +01:00
QAndroidJniObject getPackageInfo(const QString& pPackageName, int pFlags = 0)
{
QAndroidJniEnvironment env;
auto context = QtAndroid::androidContext();
auto manager = context.callObjectMethod("getPackageManager",
"()Landroid/content/pm/PackageManager;");
if (manager.isValid())
{
const auto& str = QAndroidJniObject::fromString(pPackageName);
return manager.callObjectMethod("getPackageInfo",
"(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;",
str.object<jstring>(), pFlags);
}
if (env->ExceptionCheck())
{
env->ExceptionDescribe();
env->ExceptionClear();
}
return QAndroidJniObject();
2017-07-03 09:33:28 +02:00
}
2017-12-20 14:54:05 +01:00
}
int BuildHelper::getVersionCode()
2017-07-03 09:33:28 +02:00
{
static int version_code = -1;
if (version_code == -1)
{
2017-12-20 14:54:05 +01:00
version_code = getVersionCode(getPackageName());
2017-07-03 09:33:28 +02:00
}
return version_code;
}
2017-12-20 14:54:05 +01:00
int BuildHelper::getVersionCode(const QString& pPackageName)
{
const auto info = getPackageInfo(pPackageName);
if (info.isValid())
{
return info.getField<jint>("versionCode");
}
return -1;
}
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