Rabbit-R1/switch port/java/sources/dev/fluttercommunity/plus/packageinfo/PackageInfoPlugin.java
2024-05-21 17:08:36 -04:00

147 lines
9 KiB
Java

package dev.fluttercommunity.plus.packageinfo;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import android.content.pm.SigningInfo;
import androidx.core.app.NotificationCompat;
import com.google.common.base.Ascii;
import io.flutter.embedding.engine.plugins.FlutterPlugin;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import kotlin.Metadata;
import kotlin.collections.ArraysKt;
import kotlin.jvm.internal.Intrinsics;
/* compiled from: PackageInfoPlugin.kt */
@Metadata(d1 = {"\u0000Z\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000e\n\u0000\n\u0002\u0010\u0012\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\t\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0004\u0018\u0000 2\u00020\u00012\u00020\u0002:\u0001 B\u0005¢\u0006\u0002\u0010\u0003J\u0010\u0010\b\u001a\u00020\t2\u0006\u0010\n\u001a\u00020\u000bH\u0002J\u0012\u0010\f\u001a\u0004\u0018\u00010\t2\u0006\u0010\r\u001a\u00020\u000eH\u0002J\n\u0010\u000f\u001a\u0004\u0018\u00010\tH\u0002J\u0010\u0010\u0010\u001a\u00020\u00112\u0006\u0010\u0012\u001a\u00020\u0013H\u0002J\u0010\u0010\u0014\u001a\u00020\u00152\u0006\u0010\u0016\u001a\u00020\u0017H\u0016J\u0010\u0010\u0018\u001a\u00020\u00152\u0006\u0010\u0016\u001a\u00020\u0017H\u0016J\u0018\u0010\u0019\u001a\u00020\u00152\u0006\u0010\u001a\u001a\u00020\u001b2\u0006\u0010\u001c\u001a\u00020\u001dH\u0016J\u0010\u0010\u001e\u001a\u00020\t2\u0006\u0010\u001f\u001a\u00020\u000bH\u0002R\u0010\u0010\u0004\u001a\u0004\u0018\u00010\u0005X\u0082\u000e¢\u0006\u0002\n\u0000R\u0010\u0010\u0006\u001a\u0004\u0018\u00010\u0007X\u0082\u000e¢\u0006\u0002\n\u0000¨\u0006!"}, d2 = {"Ldev/fluttercommunity/plus/packageinfo/PackageInfoPlugin;", "Lio/flutter/plugin/common/MethodChannel$MethodCallHandler;", "Lio/flutter/embedding/engine/plugins/FlutterPlugin;", "()V", "applicationContext", "Landroid/content/Context;", "methodChannel", "Lio/flutter/plugin/common/MethodChannel;", "bytesToHex", "", "bytes", "", "getBuildSignature", "pm", "Landroid/content/pm/PackageManager;", "getInstallerPackageName", "getLongVersionCode", "", "info", "Landroid/content/pm/PackageInfo;", "onAttachedToEngine", "", "binding", "Lio/flutter/embedding/engine/plugins/FlutterPlugin$FlutterPluginBinding;", "onDetachedFromEngine", "onMethodCall", NotificationCompat.CATEGORY_CALL, "Lio/flutter/plugin/common/MethodCall;", "result", "Lio/flutter/plugin/common/MethodChannel$Result;", "signatureToSha1", "sig", "Companion", "package_info_plus_release"}, k = 1, mv = {1, 9, 0}, xi = 48)
/* loaded from: classes3.dex */
public final class PackageInfoPlugin implements MethodChannel.MethodCallHandler, FlutterPlugin {
private static final String CHANNEL_NAME = "dev.fluttercommunity.plus/package_info";
private Context applicationContext;
private MethodChannel methodChannel;
@Override // io.flutter.embedding.engine.plugins.FlutterPlugin
public void onAttachedToEngine(FlutterPlugin.FlutterPluginBinding binding) {
Intrinsics.checkNotNullParameter(binding, "binding");
this.applicationContext = binding.getApplicationContext();
MethodChannel methodChannel = new MethodChannel(binding.getBinaryMessenger(), CHANNEL_NAME);
this.methodChannel = methodChannel;
Intrinsics.checkNotNull(methodChannel);
methodChannel.setMethodCallHandler(this);
}
@Override // io.flutter.embedding.engine.plugins.FlutterPlugin
public void onDetachedFromEngine(FlutterPlugin.FlutterPluginBinding binding) {
Intrinsics.checkNotNullParameter(binding, "binding");
this.applicationContext = null;
MethodChannel methodChannel = this.methodChannel;
Intrinsics.checkNotNull(methodChannel);
methodChannel.setMethodCallHandler(null);
this.methodChannel = null;
}
@Override // io.flutter.plugin.common.MethodChannel.MethodCallHandler
public void onMethodCall(MethodCall call, MethodChannel.Result result) {
Intrinsics.checkNotNullParameter(call, "call");
Intrinsics.checkNotNullParameter(result, "result");
try {
if (Intrinsics.areEqual(call.method, "getAll")) {
Context context = this.applicationContext;
Intrinsics.checkNotNull(context);
PackageManager packageManager = context.getPackageManager();
Context context2 = this.applicationContext;
Intrinsics.checkNotNull(context2);
PackageInfo packageInfo = packageManager.getPackageInfo(context2.getPackageName(), 0);
Intrinsics.checkNotNull(packageManager);
String buildSignature = getBuildSignature(packageManager);
String installerPackageName = getInstallerPackageName();
HashMap hashMap = new HashMap();
hashMap.put("appName", packageInfo.applicationInfo.loadLabel(packageManager).toString());
Context context3 = this.applicationContext;
Intrinsics.checkNotNull(context3);
hashMap.put("packageName", context3.getPackageName());
hashMap.put("version", packageInfo.versionName);
Intrinsics.checkNotNull(packageInfo);
hashMap.put("buildNumber", String.valueOf(getLongVersionCode(packageInfo)));
if (buildSignature != null) {
hashMap.put("buildSignature", buildSignature);
}
if (installerPackageName != null) {
hashMap.put("installerStore", installerPackageName);
}
result.success(hashMap);
return;
}
result.notImplemented();
} catch (PackageManager.NameNotFoundException e) {
result.error("Name not found", e.getMessage(), null);
}
}
private final String getInstallerPackageName() {
Context context = this.applicationContext;
Intrinsics.checkNotNull(context);
PackageManager packageManager = context.getPackageManager();
Context context2 = this.applicationContext;
Intrinsics.checkNotNull(context2);
return packageManager.getInstallSourceInfo(context2.getPackageName()).getInitiatingPackageName();
}
private final long getLongVersionCode(PackageInfo info) {
return info.getLongVersionCode();
}
private final String getBuildSignature(PackageManager pm) {
String signatureToSha1;
try {
Context context = this.applicationContext;
Intrinsics.checkNotNull(context);
SigningInfo signingInfo = pm.getPackageInfo(context.getPackageName(), 134217728).signingInfo;
if (signingInfo == null) {
return null;
}
if (signingInfo.hasMultipleSigners()) {
Signature[] apkContentsSigners = signingInfo.getApkContentsSigners();
Intrinsics.checkNotNullExpressionValue(apkContentsSigners, "getApkContentsSigners(...)");
byte[] byteArray = ((Signature) ArraysKt.first(apkContentsSigners)).toByteArray();
Intrinsics.checkNotNullExpressionValue(byteArray, "toByteArray(...)");
signatureToSha1 = signatureToSha1(byteArray);
} else {
Signature[] signingCertificateHistory = signingInfo.getSigningCertificateHistory();
Intrinsics.checkNotNullExpressionValue(signingCertificateHistory, "getSigningCertificateHistory(...)");
byte[] byteArray2 = ((Signature) ArraysKt.first(signingCertificateHistory)).toByteArray();
Intrinsics.checkNotNullExpressionValue(byteArray2, "toByteArray(...)");
signatureToSha1 = signatureToSha1(byteArray2);
}
return signatureToSha1;
} catch (PackageManager.NameNotFoundException | NoSuchAlgorithmException unused) {
return null;
}
}
private final String signatureToSha1(byte[] sig) throws NoSuchAlgorithmException {
MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
messageDigest.update(sig);
byte[] digest = messageDigest.digest();
Intrinsics.checkNotNull(digest);
return bytesToHex(digest);
}
private final String bytesToHex(byte[] bytes) {
char[] cArr = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
char[] cArr2 = new char[bytes.length * 2];
int length = bytes.length;
for (int i = 0; i < length; i++) {
byte b = bytes[i];
int i2 = i * 2;
cArr2[i2] = cArr[(b & 255) >>> 4];
cArr2[i2 + 1] = cArr[b & Ascii.SI];
}
return new String(cArr2);
}
}