Initial version -- added millennium read funcionality
This commit is contained in:
@@ -0,0 +1,285 @@
|
||||
package com.google.android.gms.common.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Process;
|
||||
import android.os.WorkSource;
|
||||
import android.util.Log;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import com.google.android.gms.common.internal.Preconditions;
|
||||
import com.google.android.gms.common.wrappers.Wrappers;
|
||||
import io.ktor.http.ContentDisposition;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
|
||||
/* JADX INFO: loaded from: classes2.dex */
|
||||
public class WorkSourceUtil {
|
||||
private static final int zza = Process.myUid();
|
||||
private static final Method zzb;
|
||||
private static final Method zzc;
|
||||
private static final Method zzd;
|
||||
private static final Method zze;
|
||||
private static final Method zzf;
|
||||
private static final Method zzg;
|
||||
private static final Method zzh;
|
||||
private static final Method zzi;
|
||||
private static Boolean zzj;
|
||||
|
||||
static {
|
||||
Method method;
|
||||
Method method2;
|
||||
Method method3;
|
||||
Method method4;
|
||||
Method method5;
|
||||
Method method6;
|
||||
Method method7;
|
||||
Method method8;
|
||||
try {
|
||||
method = WorkSource.class.getMethod("add", Integer.TYPE);
|
||||
} catch (Exception unused) {
|
||||
method = null;
|
||||
}
|
||||
zzb = method;
|
||||
if (PlatformVersion.isAtLeastJellyBeanMR2()) {
|
||||
try {
|
||||
method2 = WorkSource.class.getMethod("add", Integer.TYPE, String.class);
|
||||
} catch (Exception unused2) {
|
||||
method2 = null;
|
||||
}
|
||||
} else {
|
||||
method2 = null;
|
||||
}
|
||||
zzc = method2;
|
||||
try {
|
||||
method3 = WorkSource.class.getMethod(ContentDisposition.Parameters.Size, new Class[0]);
|
||||
} catch (Exception unused3) {
|
||||
method3 = null;
|
||||
}
|
||||
zzd = method3;
|
||||
try {
|
||||
method4 = WorkSource.class.getMethod("get", Integer.TYPE);
|
||||
} catch (Exception unused4) {
|
||||
method4 = null;
|
||||
}
|
||||
zze = method4;
|
||||
if (PlatformVersion.isAtLeastJellyBeanMR2()) {
|
||||
try {
|
||||
method5 = WorkSource.class.getMethod("getName", Integer.TYPE);
|
||||
} catch (Exception unused5) {
|
||||
method5 = null;
|
||||
}
|
||||
} else {
|
||||
method5 = null;
|
||||
}
|
||||
zzf = method5;
|
||||
if (PlatformVersion.isAtLeastP()) {
|
||||
try {
|
||||
method6 = WorkSource.class.getMethod("createWorkChain", new Class[0]);
|
||||
} catch (Exception e) {
|
||||
Log.w("WorkSourceUtil", "Missing WorkChain API createWorkChain", e);
|
||||
method6 = null;
|
||||
}
|
||||
} else {
|
||||
method6 = null;
|
||||
}
|
||||
zzg = method6;
|
||||
if (PlatformVersion.isAtLeastP()) {
|
||||
try {
|
||||
method7 = Class.forName("android.os.WorkSource$WorkChain").getMethod("addNode", Integer.TYPE, String.class);
|
||||
} catch (Exception e2) {
|
||||
Log.w("WorkSourceUtil", "Missing WorkChain class", e2);
|
||||
method7 = null;
|
||||
}
|
||||
} else {
|
||||
method7 = null;
|
||||
}
|
||||
zzh = method7;
|
||||
if (PlatformVersion.isAtLeastP()) {
|
||||
try {
|
||||
method8 = WorkSource.class.getMethod("isEmpty", new Class[0]);
|
||||
try {
|
||||
method8.setAccessible(true);
|
||||
} catch (Exception unused6) {
|
||||
}
|
||||
} catch (Exception unused7) {
|
||||
method8 = null;
|
||||
}
|
||||
} else {
|
||||
method8 = null;
|
||||
}
|
||||
zzi = method8;
|
||||
zzj = null;
|
||||
}
|
||||
|
||||
private WorkSourceUtil() {
|
||||
}
|
||||
|
||||
public static void add(WorkSource workSource, int i, String str) {
|
||||
Method method = zzc;
|
||||
if (method != null) {
|
||||
if (str == null) {
|
||||
str = "";
|
||||
}
|
||||
try {
|
||||
method.invoke(workSource, Integer.valueOf(i), str);
|
||||
return;
|
||||
} catch (Exception e) {
|
||||
Log.wtf("WorkSourceUtil", "Unable to assign blame through WorkSource", e);
|
||||
return;
|
||||
}
|
||||
}
|
||||
Method method2 = zzb;
|
||||
if (method2 != null) {
|
||||
try {
|
||||
method2.invoke(workSource, Integer.valueOf(i));
|
||||
} catch (Exception e2) {
|
||||
Log.wtf("WorkSourceUtil", "Unable to assign blame through WorkSource", e2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static WorkSource fromPackage(Context context, String str) {
|
||||
if (context != null && context.getPackageManager() != null && str != null) {
|
||||
try {
|
||||
ApplicationInfo applicationInfo = Wrappers.packageManager(context).getApplicationInfo(str, 0);
|
||||
if (applicationInfo == null) {
|
||||
Log.e("WorkSourceUtil", "Could not get applicationInfo from package: ".concat(str));
|
||||
return null;
|
||||
}
|
||||
int i = applicationInfo.uid;
|
||||
WorkSource workSource = new WorkSource();
|
||||
add(workSource, i, str);
|
||||
return workSource;
|
||||
} catch (PackageManager.NameNotFoundException unused) {
|
||||
Log.e("WorkSourceUtil", "Could not find package: ".concat(str));
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static WorkSource fromPackageAndModuleExperimentalPi(Context context, String str, String str2) {
|
||||
Method method;
|
||||
if (context == null || context.getPackageManager() == null || str2 == null || str == null) {
|
||||
Log.w("WorkSourceUtil", "Unexpected null arguments");
|
||||
return null;
|
||||
}
|
||||
int i = -1;
|
||||
try {
|
||||
ApplicationInfo applicationInfo = Wrappers.packageManager(context).getApplicationInfo(str, 0);
|
||||
if (applicationInfo == null) {
|
||||
Log.e("WorkSourceUtil", "Could not get applicationInfo from package: ".concat(str));
|
||||
} else {
|
||||
i = applicationInfo.uid;
|
||||
}
|
||||
} catch (PackageManager.NameNotFoundException unused) {
|
||||
Log.e("WorkSourceUtil", "Could not find package: ".concat(str));
|
||||
}
|
||||
if (i < 0) {
|
||||
return null;
|
||||
}
|
||||
WorkSource workSource = new WorkSource();
|
||||
Method method2 = zzg;
|
||||
if (method2 == null || (method = zzh) == null) {
|
||||
add(workSource, i, str);
|
||||
} else {
|
||||
try {
|
||||
Object objInvoke = method2.invoke(workSource, new Object[0]);
|
||||
int i2 = zza;
|
||||
if (i != i2) {
|
||||
method.invoke(objInvoke, Integer.valueOf(i), str);
|
||||
}
|
||||
method.invoke(objInvoke, Integer.valueOf(i2), str2);
|
||||
} catch (Exception e) {
|
||||
Log.w("WorkSourceUtil", "Unable to assign chained blame through WorkSource", e);
|
||||
}
|
||||
}
|
||||
return workSource;
|
||||
}
|
||||
|
||||
public static int get(WorkSource workSource, int i) {
|
||||
Method method = zze;
|
||||
if (method == null) {
|
||||
return 0;
|
||||
}
|
||||
try {
|
||||
Object objInvoke = method.invoke(workSource, Integer.valueOf(i));
|
||||
Preconditions.checkNotNull(objInvoke);
|
||||
return ((Integer) objInvoke).intValue();
|
||||
} catch (Exception e) {
|
||||
Log.wtf("WorkSourceUtil", "Unable to assign blame through WorkSource", e);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public static String getName(WorkSource workSource, int i) {
|
||||
Method method = zzf;
|
||||
if (method == null) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
return (String) method.invoke(workSource, Integer.valueOf(i));
|
||||
} catch (Exception e) {
|
||||
Log.wtf("WorkSourceUtil", "Unable to assign blame through WorkSource", e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static List<String> getNames(WorkSource workSource) {
|
||||
ArrayList arrayList = new ArrayList();
|
||||
int size = workSource == null ? 0 : size(workSource);
|
||||
if (size != 0) {
|
||||
for (int i = 0; i < size; i++) {
|
||||
String name = getName(workSource, i);
|
||||
if (!Strings.isEmptyOrWhitespace(name)) {
|
||||
Preconditions.checkNotNull(name);
|
||||
arrayList.add(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
return arrayList;
|
||||
}
|
||||
|
||||
public static synchronized boolean hasWorkSourcePermission(Context context) {
|
||||
Boolean bool = zzj;
|
||||
if (bool != null) {
|
||||
return bool.booleanValue();
|
||||
}
|
||||
if (context == null) {
|
||||
return false;
|
||||
}
|
||||
Boolean boolValueOf = Boolean.valueOf(ContextCompat.checkSelfPermission(context, "android.permission.UPDATE_DEVICE_STATS") == 0);
|
||||
zzj = boolValueOf;
|
||||
return boolValueOf.booleanValue();
|
||||
}
|
||||
|
||||
public static boolean isEmpty(WorkSource workSource) {
|
||||
Method method = zzi;
|
||||
if (method != null) {
|
||||
try {
|
||||
Object objInvoke = method.invoke(workSource, new Object[0]);
|
||||
Preconditions.checkNotNull(objInvoke);
|
||||
return ((Boolean) objInvoke).booleanValue();
|
||||
} catch (Exception e) {
|
||||
Log.e("WorkSourceUtil", "Unable to check WorkSource emptiness", e);
|
||||
}
|
||||
}
|
||||
return size(workSource) == 0;
|
||||
}
|
||||
|
||||
public static int size(WorkSource workSource) {
|
||||
Method method = zzd;
|
||||
if (method != null) {
|
||||
try {
|
||||
Object objInvoke = method.invoke(workSource, new Object[0]);
|
||||
Preconditions.checkNotNull(objInvoke);
|
||||
return ((Integer) objInvoke).intValue();
|
||||
} catch (Exception e) {
|
||||
Log.wtf("WorkSourceUtil", "Unable to assign blame through WorkSource", e);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user