正在查看: Fix Locker v1.5 应用的 KioskModeActivity.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: Fix 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);
}
}
}