/*
* MaxLock, an Xposed applock module for Android
* Copyright (C) 2014-2016 Max Rumpf alias Maxr1998
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.Maxr1998.xposed.maxlock.hooks;
import android.os.Build;
import de.Maxr1998.xposed.maxlock.BuildConfig;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.IXposedHookZygoteInit;
import de.robv.android.xposed.XSharedPreferences;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;
import static de.Maxr1998.xposed.maxlock.Common.MAXLOCK_PACKAGE_NAME;
import static de.Maxr1998.xposed.maxlock.util.AppLockHelpers.getDefault;
import static de.Maxr1998.xposed.maxlock.util.AppLockHelpers.writeFile;
import static de.robv.android.xposed.XposedBridge.log;
public class Main implements IXposedHookZygoteInit, IXposedHookLoadPackage {
private static XSharedPreferences prefsApps;
static void logD(String message) {
if (BuildConfig.DEBUG)
log(message);
}
@Override
public void initZygote(StartupParam startupParam) throws Throwable {
log("ML: Loaded Main class");
prefsApps = new XSharedPreferences(MAXLOCK_PACKAGE_NAME, "packages");
prefsApps.makeWorldReadable();
writeFile(getDefault());
}
@Override
public void handleLoadPackage(final LoadPackageParam lPParam) throws Throwable {
if (lPParam.packageName.equals(MaxLock.PACKAGE_NAME)) {
MaxLock.init(lPParam);
} else if (lPParam.packageName.equals(DeviceAdminProtection.PACKAGE_NAME)) {
DeviceAdminProtection.init(lPParam);
} else if (lPParam.packageName.equals(SystemUI.PACKAGE_NAME)) {
SystemUI.init(prefsApps, lPParam);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
SystemUI.initScreenOff(prefsApps, lPParam);
}
return;
} else if (lPParam.packageName.equals(SystemUI.PACKAGE_NAME_KEYGUARD) && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
SystemUI.initScreenOff(prefsApps, lPParam);
return;
}
prefsApps.reload();
if (prefsApps.getBoolean(lPParam.packageName, false)) {
Apps.init(prefsApps, lPParam);
} else {
Apps.initLogging(lPParam);
}
}
}