正在查看: Petal Maps v4.7.0.310001 应用的 AppUtils.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: Petal Maps v4.7.0.310001 应用的 AppUtils.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package com.huawei.hiassistant.platform.commonaction.payload.command.util;
import android.app.ActivityManager;
import android.content.ActivityNotFoundException;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.text.TextUtils;
import com.huawei.android.hicloud.sync.update.UpdateConstants;
import com.huawei.hiassistant.platform.base.adapter.emuiadapter.PackageType;
import com.huawei.hiassistant.platform.base.adapter.emuiadapter.SystemProxyFactory;
import com.huawei.hiassistant.platform.base.util.IAssistantConfig;
import com.huawei.hiassistant.platform.base.util.KeyguardUtil;
import com.huawei.hiassistant.platform.base.util.KitLog;
import com.huawei.hiassistant.platform.base.util.common.PackageNameManager;
import com.huawei.hiassistant.platform.commonaction.R$string;
import com.huawei.hiassistant.voice.wakeup.common.WakeFileUtil;
import com.huawei.hms.ml.language.common.utils.Constant;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Optional;
public class AppUtils {
private static final String ACTION_SECURE = "android.security.action.START_APP_SECURE";
private static final int APPLICATION_RUNNING_NUM = 100;
private static final String APP_CENTER_SEARCH_ACTION = "com.huawei.appmarket.appmarket.intent.action.SearchActivity";
private static final String APP_CENTER_SEARCH_KEY_WORD = "keyWord";
private static final String EXTRA_KEY_DESKCLOCK_TAB = "deskclock.select.tab";
private static final List<String> LOCK_SCREEN_PACKAGE_LIST;
private static final String PACKAGE_NAME_CALCULATOR;
private static final String PACKAGE_NAME_CALCULATOR_NEW;
private static final String PACKAGE_NAME_CALCULATOR_OLD = "com.android.calculator2";
private static final String PACKAGE_NAME_CAMERA = "com.huawei.camera";
private static final String PACKAGE_NAME_DESKCLOCK;
private static final String PACKAGE_NAME_DESKCLOCK_NEW;
private static final String PACKAGE_NAME_DESKCLOCK_OLD = "com.android.deskclock";
private static final String PACKAGE_NAME_DISK = "com.huawei.hidisk";
private static final String PACKAGE_NAME_SCANNER = "com.huawei.scanner";
private static final String PACKAGE_NAME_SOUNDRECORDER;
private static final String PACKAGE_NAME_SOUNDRECORDER_NEW;
private static final String PACKAGE_NAME_SOUNDRECORDER_OLD = "com.android.soundrecorder";
private static final String SYSTEM_MANAGER_ACCESS_PERMISSION = "com.huawei.systemmanager.permission.ACCESS_INTERFACE";
private static final int TAB_INDEX_ALARM_CLOCK = 0;
private static final int TAB_INDEX_ALARM_TIMER = 3;
private static final int TAB_INDEX_CLOCK = 1;
private static final int TAB_INDEX_STOPWATCH = 2;
private static final String TAG = "AppUtils";
private static final int TASK_ID = -1;
static {
String compatPackageName = SystemProxyFactory.getProxy().getCompatPackageName(PackageType.CALCULATOR);
PACKAGE_NAME_CALCULATOR_NEW = compatPackageName;
if (!checkApplicationExist(compatPackageName, false)) {
compatPackageName = "com.android.calculator2";
}
String str = compatPackageName;
PACKAGE_NAME_CALCULATOR = str;
String compatPackageName2 = SystemProxyFactory.getProxy().getCompatPackageName(PackageType.SOUNDRECORDER);
PACKAGE_NAME_SOUNDRECORDER_NEW = compatPackageName2;
if (!checkApplicationExist(compatPackageName2, false)) {
compatPackageName2 = "com.android.soundrecorder";
}
String str2 = compatPackageName2;
PACKAGE_NAME_SOUNDRECORDER = str2;
String compatPackageName3 = SystemProxyFactory.getProxy().getCompatPackageName(PackageType.DESKCLOCK);
PACKAGE_NAME_DESKCLOCK_NEW = compatPackageName3;
if (!checkApplicationExist(compatPackageName3, false)) {
compatPackageName3 = "com.android.deskclock";
}
String str3 = compatPackageName3;
PACKAGE_NAME_DESKCLOCK = str3;
LOCK_SCREEN_PACKAGE_LIST = Arrays.asList(str, "com.huawei.camera", str2, str3, "com.huawei.scanner", "com.huawei.hidisk");
}
public static boolean checkApplicationExist(String str, boolean z) {
KitLog.debug(TAG, "checkApplicationExist", new Object[0]);
if (str != null && str.length() != 0) {
try {
KitLog.debug(TAG, "checkApplicationExist", new Object[0]);
ApplicationInfo applicationInfo = IAssistantConfig.getInstance().getAppContext().getPackageManager().getApplicationInfo(str, 128);
if (z) {
return applicationInfo != null && applicationInfo.enabled;
}
KitLog.debug(TAG, "isCheckEnabled is false", new Object[0]);
return applicationInfo != null;
} catch (PackageManager.NameNotFoundException | RuntimeException unused) {
KitLog.info(TAG, str + " is not installed!");
}
}
return false;
}
private static boolean checkGetTaskPermission() {
if (IAssistantConfig.getInstance().getAppContext().checkSelfPermission("android.permission.REAL_GET_TASKS") == 0) {
return true;
}
KitLog.warn(TAG, "no permission Manifest.permission.REAL_GET_TASKS");
return false;
}
public static void closeAppByPackageName(Context context, String str) {
if (context == null || TextUtils.isEmpty(str)) {
KitLog.warn(TAG, "close app failed.");
return;
}
int taskIdByPackageName = getTaskIdByPackageName(context, str);
Intent intent = new Intent("huawei.intent.action.hsm_remove_pkg");
intent.putExtra("pkg_name", str);
intent.putExtra("userid", 0);
if (taskIdByPackageName != -1) {
intent.putExtra("taskid", taskIdByPackageName);
}
context.sendBroadcast(intent, SYSTEM_MANAGER_ACCESS_PERMISSION);
}
private static Optional<ActivityManager> getActivityManager(Context context) {
return context == null ? Optional.empty() : Optional.ofNullable((ActivityManager) context.getSystemService(ActivityManager.class));
}
public static String getActivityNameByPackageName(String str) {
PackageManager packageManager = IAssistantConfig.getInstance().getAppContext().getPackageManager();
if (packageManager == null) {
KitLog.error(TAG, "searchAppFromPmWithAppName :error:pm is null");
return "";
}
Intent intent = new Intent("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");
List<ResolveInfo> queryIntentActivities = packageManager.queryIntentActivities(intent, 0);
if (queryIntentActivities == null) {
KitLog.error(TAG, "searchAppFromPmWithAppName :error: listAppcations is null");
return "";
}
for (ResolveInfo resolveInfo : queryIntentActivities) {
if (resolveInfo.activityInfo.packageName.equals(str)) {
KitLog.debug(TAG, "activityname is {}", resolveInfo.activityInfo.name);
return resolveInfo.activityInfo.name;
}
}
return "";
}
public static String getPackageName(Context context, String str) {
if (context == null || TextUtils.isEmpty(str)) {
KitLog.error(TAG, "getPackageName input params is invalidate");
return "";
}
if (str.equals(context.getString(R$string.timer)) || str.equals(context.getString(R$string.alarm)) || str.equals(context.getString(R$string.stop_watch)) || str.equals(context.getString(R$string.clock))) {
KitLog.debug(TAG, "packageName convert to clock", new Object[0]);
return PACKAGE_NAME_DESKCLOCK;
}
PackageManager packageManager = context.getPackageManager();
if (packageManager == null) {
KitLog.error(TAG, "getPackageName PackageManager is invalidate");
return "";
}
Intent intent = new Intent("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");
List<ResolveInfo> queryIntentActivities = packageManager.queryIntentActivities(intent, 0);
if (queryIntentActivities == null) {
KitLog.error(TAG, "getAllCorrelativeApps :error: listAppcations is null");
return "";
}
String replace = str.replace(Constant.BLANK_SPACE, "");
String str2 = "";
for (ResolveInfo resolveInfo : queryIntentActivities) {
CharSequence loadLabel = resolveInfo.loadLabel(packageManager);
String charSequence = loadLabel != null ? loadLabel.toString() : null;
if (charSequence != null) {
String replace2 = charSequence.replace(Constant.BLANK_SPACE, "");
if (TextUtils.isEmpty(replace2)) {
continue;
} else {
Locale locale = Locale.US;
if (TextUtils.equals(replace2.toUpperCase(locale), replace.toUpperCase(locale))) {
String str3 = resolveInfo.activityInfo.packageName;
KitLog.debug(TAG, "return packageName = {}, appLabel = {}", str3, replace2);
return str3;
}
if (replace2.toUpperCase(locale).contains(replace.toUpperCase(locale))) {
str2 = resolveInfo.activityInfo.packageName;
KitLog.debug(TAG, "packageName = {}, appLabel = {}", str2, replace2);
}
}
}
}
queryIntentActivities.clear();
return str2;
}
private static int getTaskIdByPackageName(Context context, String str) {
if (!checkGetTaskPermission()) {
return -1;
}
if (context == null || TextUtils.isEmpty(str)) {
KitLog.warn(TAG, "getTaskId failed.");
return -1;
}
Optional<ActivityManager> activityManager = getActivityManager(context);
if (!activityManager.isPresent()) {
return -1;
}
List<ActivityManager.RunningTaskInfo> runningTasks = activityManager.get().getRunningTasks(100);
if (runningTasks == null || runningTasks.size() <= 0) {
KitLog.info(TAG, "running task is empty");
return -1;
}
for (ActivityManager.RunningTaskInfo runningTaskInfo : runningTasks) {
ComponentName componentName = runningTaskInfo.baseActivity;
if (componentName != null && str.equals(componentName.getPackageName())) {
return runningTaskInfo.id;
}
}
return -1;
}
public static boolean isAppRunning(String str) {
KitLog.debug(TAG, "isAppRunning", new Object[0]);
if (!checkGetTaskPermission()) {
return false;
}
Context appContext = IAssistantConfig.getInstance().getAppContext();
if (appContext == null) {
KitLog.warn(TAG, "isAppRunning context is null");
return false;
}
if (TextUtils.isEmpty(str)) {
KitLog.warn(TAG, "isAppRunning pkgName is null");
return false;
}
Optional<ActivityManager> activityManager = getActivityManager(appContext);
if (!activityManager.isPresent()) {
KitLog.warn(TAG, "isAppRunning am is null");
return false;
}
List<ActivityManager.RunningTaskInfo> runningTasks = activityManager.get().getRunningTasks(100);
if (runningTasks == null || runningTasks.isEmpty()) {
KitLog.error(TAG, "taskInfoList is empty");
return false;
}
Iterator<ActivityManager.RunningTaskInfo> it = runningTasks.iterator();
while (it.hasNext()) {
String packageName = it.next().topActivity.getPackageName();
KitLog.debug(TAG, "getPackageName : {}", packageName);
if (str.equals(packageName)) {
return true;
}
}
return false;
}
public static boolean isNeedStartSpecialActivity(String str) {
return LOCK_SCREEN_PACKAGE_LIST.contains(str);
}
public static boolean isPackageRunTop(Context context, String str) {
if (!checkGetTaskPermission()) {
return false;
}
if (context == null) {
KitLog.warn(TAG, "isPackageRunTop context is null");
return false;
}
Optional<ActivityManager> activityManager = getActivityManager(context);
if (!activityManager.isPresent()) {
KitLog.error(TAG, "isPackageRunTop ActivityManager is null");
return false;
}
List<ActivityManager.RunningTaskInfo> runningTasks = activityManager.get().getRunningTasks(100);
ComponentName componentName = (runningTasks == null || runningTasks.isEmpty()) ? null : runningTasks.get(0).topActivity;
if (componentName == null) {
return false;
}
KitLog.debug(TAG, "isPackageRunTop getPackageName: {}", componentName.getPackageName());
return componentName.getPackageName().contains(str);
}
private static void putExtraIfNeeded(Intent intent, String str) {
if (intent == null) {
KitLog.error(TAG, "putExtraIfNeeded intent is null");
return;
}
Context appContext = IAssistantConfig.getInstance().getAppContext();
if (appContext.getString(R$string.timer).equals(str)) {
intent.putExtra(EXTRA_KEY_DESKCLOCK_TAB, 3);
return;
}
if (appContext.getString(R$string.alarm).equals(str)) {
intent.putExtra(EXTRA_KEY_DESKCLOCK_TAB, 0);
return;
}
if (appContext.getString(R$string.stop_watch).equals(str)) {
intent.putExtra(EXTRA_KEY_DESKCLOCK_TAB, 2);
} else if (appContext.getString(R$string.clock).equals(str)) {
intent.putExtra(EXTRA_KEY_DESKCLOCK_TAB, 1);
} else {
KitLog.debug(TAG, "unknown apkName", new Object[0]);
}
}
public static boolean searchAppFromWeb(String str) {
KitLog.debug(TAG, "searchAppFromWeb: appName = {}", str);
Intent intent = new Intent();
try {
intent.setAction(APP_CENTER_SEARCH_ACTION);
intent.addFlags(268468224);
intent.putExtra(APP_CENTER_SEARCH_KEY_WORD, str);
intent.setPackage(PackageNameManager.APP_MARKET_PACKAGE_NAME);
IAssistantConfig.getInstance().getAppContext().startActivity(intent);
return true;
} catch (ActivityNotFoundException unused) {
KitLog.error(TAG, "searchAppFromWeb appmarket not found");
return false;
}
}
public static boolean startActivity(String str, String str2, String str3) {
if (KeyguardUtil.isKeyguardSecureLock()) {
return startActivityOnKeyguard(str, str3);
}
try {
Intent intent = new Intent();
intent.addFlags(268435456);
intent.addFlags(WakeFileUtil.READ_BASE64_FILE_MAX_LENGTH);
intent.setAction("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");
if ("com.huawei.camera".equals(str)) {
intent.addFlags(536870912);
}
putExtraIfNeeded(intent, str3);
KitLog.debug(TAG, "pkgName={}, activityName={}", str, str2);
intent.setComponent(new ComponentName(str, str2));
IAssistantConfig.getInstance().getAppContext().startActivity(intent);
return true;
} catch (ActivityNotFoundException unused) {
KitLog.debug(TAG, "ActivityNotFoundException : {}", str);
return false;
} catch (SecurityException unused2) {
KitLog.debug(TAG, "Permission Denial", new Object[0]);
return false;
}
}
private static boolean startActivityOnKeyguard(String str, String str2) {
Intent intent = new Intent(ACTION_SECURE).addFlags(8388608).addFlags(268435456).addFlags(536870912).addFlags(67108864).addFlags(UpdateConstants.DOWNLOAD_BUFFER).setPackage(str);
if (TextUtils.equals(str, "com.huawei.camera")) {
intent.setAction("android.media.action.STILL_IMAGE_CAMERA_SECURE");
}
putExtraIfNeeded(intent, str2);
try {
IAssistantConfig.getInstance().getAppContext().startActivity(intent);
return true;
} catch (ActivityNotFoundException unused) {
KitLog.error(TAG, "openApp: ActivityNotFoundException");
return false;
}
}
public static boolean startAppByPackageName(Context context, String str) {
KitLog.debug(TAG, "startAppByPackageName packageName is {}", str);
if (context == null || TextUtils.isEmpty(str)) {
KitLog.debug(TAG, "open app failed for context = {}; packageName = {}", context, str);
return false;
}
PackageManager packageManager = context.getPackageManager();
if (packageManager == null) {
KitLog.error(TAG, "open app failed for pm == null");
return false;
}
Intent launchIntentForPackage = packageManager.getLaunchIntentForPackage(str);
if (launchIntentForPackage == null) {
KitLog.error(TAG, "open app failed for intent is null");
return false;
}
launchIntentForPackage.addFlags(268435456);
try {
context.getApplicationContext().startActivity(launchIntentForPackage);
return true;
} catch (ActivityNotFoundException unused) {
KitLog.error(TAG, "ActivityNotFoundException");
return false;
}
}
}