what-the-bank/sources/io/flutter/embedding/engine/loader/ApplicationInfoLoader.java

116 lines
5.3 KiB
Java
Raw Normal View History

2024-07-27 18:17:47 +07:00
package io.flutter.embedding.engine.loader;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.res.XmlResourceParser;
import android.os.Bundle;
import java.io.IOException;
import org.json.JSONArray;
import org.xmlpull.v1.XmlPullParserException;
/* loaded from: classes.dex */
public final class ApplicationInfoLoader {
public static final String NETWORK_POLICY_METADATA_KEY = "io.flutter.network-policy";
public static final String PUBLIC_AUTOMATICALLY_REGISTER_PLUGINS_METADATA_KEY = "io.flutter.automatically-register-plugins";
public static final String PUBLIC_AOT_SHARED_LIBRARY_NAME = FlutterLoader.class.getName() + ".aot-shared-library-name";
public static final String PUBLIC_VM_SNAPSHOT_DATA_KEY = FlutterLoader.class.getName() + ".vm-snapshot-data";
public static final String PUBLIC_ISOLATE_SNAPSHOT_DATA_KEY = FlutterLoader.class.getName() + ".isolate-snapshot-data";
public static final String PUBLIC_FLUTTER_ASSETS_DIR_KEY = FlutterLoader.class.getName() + ".flutter-assets-dir";
private static ApplicationInfo getApplicationInfo(Context context) {
try {
return context.getPackageManager().getApplicationInfo(context.getPackageName(), 128);
} catch (PackageManager.NameNotFoundException e) {
throw new RuntimeException(e);
}
}
private static String getString(Bundle bundle, String str) {
if (bundle == null) {
return null;
}
return bundle.getString(str, null);
}
private static boolean getBoolean(Bundle bundle, String str, boolean z) {
return bundle == null ? z : bundle.getBoolean(str, z);
}
private static String getNetworkPolicy(ApplicationInfo applicationInfo, Context context) {
int i;
Bundle bundle = applicationInfo.metaData;
if (bundle == null || (i = bundle.getInt(NETWORK_POLICY_METADATA_KEY, 0)) <= 0) {
return null;
}
JSONArray jSONArray = new JSONArray();
try {
XmlResourceParser xml = context.getResources().getXml(i);
xml.next();
for (int eventType = xml.getEventType(); eventType != 1; eventType = xml.next()) {
if (eventType == 2) {
if (xml.getName().equals("domain-config")) {
parseDomainConfig(xml, jSONArray, false);
}
}
}
return jSONArray.toString();
} catch (IOException | XmlPullParserException unused) {
return null;
}
}
private static void parseDomainConfig(XmlResourceParser xmlResourceParser, JSONArray jSONArray, boolean z) throws IOException, XmlPullParserException {
boolean attributeBooleanValue = xmlResourceParser.getAttributeBooleanValue(null, "cleartextTrafficPermitted", z);
while (true) {
int next = xmlResourceParser.next();
if (next == 2) {
if (xmlResourceParser.getName().equals("domain")) {
parseDomain(xmlResourceParser, jSONArray, attributeBooleanValue);
} else if (xmlResourceParser.getName().equals("domain-config")) {
parseDomainConfig(xmlResourceParser, jSONArray, attributeBooleanValue);
} else {
skipTag(xmlResourceParser);
}
} else if (next == 3) {
return;
}
}
}
private static void skipTag(XmlResourceParser xmlResourceParser) throws IOException, XmlPullParserException {
String name = xmlResourceParser.getName();
int eventType = xmlResourceParser.getEventType();
while (true) {
if (eventType == 3 && xmlResourceParser.getName() == name) {
return;
} else {
eventType = xmlResourceParser.next();
}
}
}
private static void parseDomain(XmlResourceParser xmlResourceParser, JSONArray jSONArray, boolean z) throws IOException, XmlPullParserException {
boolean attributeBooleanValue = xmlResourceParser.getAttributeBooleanValue(null, "includeSubdomains", false);
xmlResourceParser.next();
if (xmlResourceParser.getEventType() != 4) {
throw new IllegalStateException("Expected text");
}
String trim = xmlResourceParser.getText().trim();
JSONArray jSONArray2 = new JSONArray();
jSONArray2.put(trim);
jSONArray2.put(attributeBooleanValue);
jSONArray2.put(z);
jSONArray.put(jSONArray2);
xmlResourceParser.next();
if (xmlResourceParser.getEventType() != 3) {
throw new IllegalStateException("Expected end of domain tag");
}
}
public static FlutterApplicationInfo load(Context context) {
ApplicationInfo applicationInfo = getApplicationInfo(context);
return new FlutterApplicationInfo(getString(applicationInfo.metaData, PUBLIC_AOT_SHARED_LIBRARY_NAME), getString(applicationInfo.metaData, PUBLIC_VM_SNAPSHOT_DATA_KEY), getString(applicationInfo.metaData, PUBLIC_ISOLATE_SNAPSHOT_DATA_KEY), getString(applicationInfo.metaData, PUBLIC_FLUTTER_ASSETS_DIR_KEY), getNetworkPolicy(applicationInfo, context), applicationInfo.nativeLibraryDir, getBoolean(applicationInfo.metaData, PUBLIC_AUTOMATICALLY_REGISTER_PLUGINS_METADATA_KEY, true));
}
}