导航菜单

页面标题

页面副标题

Petal Maps v4.7.0.310001 - AppUtils.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;
        }
    }
}