5package org.qtproject.qt.android;
7import android.app.Activity;
8import android.content.Context;
9import android.content.ContextWrapper;
10import android.content.Intent;
11import android.content.pm.ApplicationInfo;
12import android.os.Bundle;
13import android.util.Base64;
14import android.util.DisplayMetrics;
15import android.util.Log;
17import java.lang.IllegalArgumentException;
18import java.nio.charset.StandardCharsets;
20class QtActivityLoader
extends QtLoader {
21 private final Activity m_activity;
23 private QtActivityLoader(Activity activity)
throws IllegalArgumentException
25 super(
new ContextWrapper(activity));
28 extractContextMetaData(m_activity);
31 static QtActivityLoader getActivityLoader(Activity activity)
throws IllegalArgumentException {
32 if (m_instance ==
null)
33 m_instance =
new QtActivityLoader(activity);
34 return (QtActivityLoader) m_instance;
40 return new String(decodedExtraEnvVars, StandardCharsets.UTF_8);
45 int size = m_activity.getResources().getDimensionPixelSize(android.R.dimen.app_icon_size);
47 DisplayMetrics
metrics =
new DisplayMetrics();
48 QtDisplayManager.getDisplay(m_activity).getMetrics(
metrics);
49 size = metrics.densityDpi / 10 * 3;
60 private void setupStyleExtraction()
62 int displayDensity = m_activity.getResources().getDisplayMetrics().densityDpi;
63 setEnvironmentVariable(
"QT_ANDROID_THEME_DISPLAY_DPI",
String.valueOf(displayDensity));
65 String extractOption = getMetaData(
"android.app.extract_android_style");
66 if (extractOption.equals(
"full"))
67 setEnvironmentVariable(
"QT_USE_ANDROID_NATIVE_STYLE",
String.valueOf(1));
69 String stylePath = ExtractStyle.setup(m_activity, extractOption, displayDensity);
70 setEnvironmentVariable(
"ANDROID_STYLE_PATH", stylePath);
76 super.extractContextMetaData(
context);
78 setEnvironmentVariable(
"QT_USE_ANDROID_NATIVE_DIALOGS",
String.valueOf(1));
79 setEnvironmentVariable(
"QT_ANDROID_APP_ICON_SIZE",
String.valueOf(getAppIconSize()));
81 setupStyleExtraction();
83 Intent intent = m_activity.getIntent();
85 Log.w(QtTAG,
"Null Intent from the current Activity.");
89 Bundle extras = intent.getExtras();
91 Log.w(QtTAG,
"Null extras from the Activity's intent.");
95 int flags = m_activity.getApplicationInfo().flags;
96 boolean isDebuggable = (
flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
99 if (extras.containsKey(
"extraenvvars")) {
100 String extraEnvVars = extras.getString(
"extraenvvars");
101 setEnvironmentVariables(getDecodedUtfString(extraEnvVars));
104 if (extras.containsKey(
"extraappparams")) {
105 String extraAppParams = extras.getString(
"extraappparams");
106 appendApplicationParameters(getDecodedUtfString(extraAppParams));
109 Log.d(QtNative.QtTAG,
"Not in debug mode! It is not allowed to use extra arguments " +
110 "in non-debug mode.");
static const QString context()
QMap< Name, StatePointer > Bundle
Q_CORE_EXPORT QtJniTypes::Activity activity()
GLenum GLuint GLintptr GLsizeiptr size
GLsizei GLenum const void GLuint GLsizei GLfloat * metrics
QString str("QStringBuilder")
[5]