导航菜单

页面标题

页面副标题

Loan Locker v1.5 - KioskModeActivity.java 源代码

正在查看: Loan Locker v1.5 应用的 KioskModeActivity.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.user.a4keygen.policy.locktask;

import android.app.Activity;
import android.app.ActivityManager;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.user.a4keygen.DeviceAdminReceiver;
import com.user.a4keygen.PolicyManagementActivity;
import com.user.a4keygen.R;
import com.user.a4keygen.common.Util;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;

public class KioskModeActivity extends Activity {
    private static final String KIOSK_APPS_KEY = "kiosk_apps";
    private static final String KIOSK_PREFERENCE_FILE = "kiosk_preference_file";
    private static final String[] KIOSK_USER_RESTRICTIONS = {"no_safe_boot", "no_factory_reset", "no_add_user", "no_physical_media", "no_adjust_volume"};
    public static final String LOCKED_APP_PACKAGE_LIST = "com.user.a4keygen.policy.locktask.LOCKED_APP_PACKAGE_LIST";
    private static final String TAG = "KioskModeActivity";
    private ComponentName mAdminComponentName;
    private DevicePolicyManager mDevicePolicyManager;
    private ArrayList<String> mKioskPackages;
    private PackageManager mPackageManager;

    @Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        this.mAdminComponentName = DeviceAdminReceiver.getComponentName(this);
        this.mDevicePolicyManager = (DevicePolicyManager) getSystemService("device_policy");
        this.mPackageManager = getPackageManager();
        String[] stringArrayExtra = getIntent().getStringArrayExtra(LOCKED_APP_PACKAGE_LIST);
        if (stringArrayExtra != null) {
            this.mKioskPackages = new ArrayList<>();
            for (String str : stringArrayExtra) {
                this.mKioskPackages.add(str);
            }
            this.mKioskPackages.remove(getPackageName());
            this.mKioskPackages.add(getPackageName());
            setDefaultKioskPolicies(true);
        } else {
            this.mKioskPackages = new ArrayList<>(getSharedPreferences(KIOSK_PREFERENCE_FILE, 0).getStringSet(KIOSK_APPS_KEY, new HashSet<>()));
        }
        this.mKioskPackages.remove(getPackageName());
        this.mKioskPackages.add(getPackageName());
        final KioskAppsArrayAdapter kioskAppsArrayAdapter = new KioskAppsArrayAdapter(this, R.id.pkg_name, this.mKioskPackages);
        ListView listView = new ListView(this);
        listView.setAdapter((ListAdapter) kioskAppsArrayAdapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long j) {
                kioskAppsArrayAdapter.onItemClick(adapterView, view, i, j);
            }
        });
        setContentView(listView);
    }

    @Override
    protected void onStart() {
        super.onStart();
        ActivityManager activityManager = (ActivityManager) getSystemService("activity");
        if (Util.SDK_INT < 23) {
            if (activityManager.isInLockTaskMode()) {
                return;
            }
            startLockTask();
        } else if (activityManager.getLockTaskModeState() == 0) {
            startLockTask();
        }
    }

    public void onBackdoorClicked() {
        stopLockTask();
        setDefaultKioskPolicies(false);
        this.mDevicePolicyManager.clearPackagePersistentPreferredActivities(this.mAdminComponentName, getPackageName());
        this.mPackageManager.setComponentEnabledSetting(new ComponentName(getPackageName(), getClass().getName()), 0, 1);
        finish();
        startActivity(new Intent(this, (Class<?>) PolicyManagementActivity.class));
    }

    private void setUserRestriction(String str, boolean z) {
        if (z) {
            this.mDevicePolicyManager.addUserRestriction(this.mAdminComponentName, str);
        } else {
            this.mDevicePolicyManager.clearUserRestriction(this.mAdminComponentName, str);
        }
    }

    private void setDefaultKioskPolicies(boolean z) {
        if (z) {
            saveCurrentConfiguration();
            setUserRestriction("no_safe_boot", z);
            setUserRestriction("no_factory_reset", z);
            setUserRestriction("no_add_user", z);
            setUserRestriction("no_physical_media", z);
            setUserRestriction("no_adjust_volume", z);
        } else {
            restorePreviousConfiguration();
        }
        this.mDevicePolicyManager.setLockTaskPackages(this.mAdminComponentName, z ? (String[]) this.mKioskPackages.toArray(new String[0]) : new String[0]);
        SharedPreferences.Editor edit = getSharedPreferences(KIOSK_PREFERENCE_FILE, 0).edit();
        if (z) {
            edit.putStringSet(KIOSK_APPS_KEY, new HashSet(this.mKioskPackages));
        } else {
            edit.remove(KIOSK_APPS_KEY);
        }
        edit.commit();
    }

    private void saveCurrentConfiguration() {
        if (Util.SDK_INT >= 24) {
            Bundle userRestrictions = this.mDevicePolicyManager.getUserRestrictions(this.mAdminComponentName);
            SharedPreferences.Editor edit = getSharedPreferences(KIOSK_PREFERENCE_FILE, 0).edit();
            for (String str : KIOSK_USER_RESTRICTIONS) {
                edit.putBoolean(str, userRestrictions.getBoolean(str));
            }
            edit.commit();
        }
    }

    private void restorePreviousConfiguration() {
        if (Util.SDK_INT >= 24) {
            SharedPreferences sharedPreferences = getSharedPreferences(KIOSK_PREFERENCE_FILE, 0);
            for (String str : KIOSK_USER_RESTRICTIONS) {
                setUserRestriction(str, sharedPreferences.getBoolean(str, false));
            }
        }
    }

    private class KioskAppsArrayAdapter extends ArrayAdapter<String> implements AdapterView.OnItemClickListener {
        public KioskAppsArrayAdapter(Context context, int i, List<String> list) {
            super(context, i, list);
        }

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            try {
                ApplicationInfo applicationInfo = KioskModeActivity.this.mPackageManager.getApplicationInfo(getItem(i), 0);
                if (view == null) {
                    view = LayoutInflater.from(getContext()).inflate(R.layout.kiosk_mode_item, viewGroup, false);
                }
                ((ImageView) view.findViewById(R.id.pkg_icon)).setImageDrawable(applicationInfo.loadIcon(KioskModeActivity.this.mPackageManager));
                TextView textView = (TextView) view.findViewById(R.id.pkg_name);
                if (!KioskModeActivity.this.getPackageName().equals(getItem(i))) {
                    textView.setText(applicationInfo.loadLabel(KioskModeActivity.this.mPackageManager));
                } else {
                    textView.setText(KioskModeActivity.this.getString(R.string.stop_kiosk_mode));
                }
                return view;
            } catch (PackageManager.NameNotFoundException e) {
                Log.e(KioskModeActivity.TAG, "Fail to retrieve application info for the entry: " + i, e);
                return null;
            }
        }

        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long j) {
            Intent launchIntentForPackage;
            if (KioskModeActivity.this.getPackageName().equals(getItem(i))) {
                KioskModeActivity.this.onBackdoorClicked();
                return;
            }
            PackageManager packageManager = KioskModeActivity.this.getPackageManager();
            String item = getItem(i);
            if (Util.isRunningOnTvDevice(getContext())) {
                launchIntentForPackage = packageManager.getLeanbackLaunchIntentForPackage(item);
            } else {
                launchIntentForPackage = packageManager.getLaunchIntentForPackage(item);
            }
            KioskModeActivity.this.startActivity(launchIntentForPackage);
        }
    }
}