Skip to content

Commit

Permalink
V1.4.4 without translations
Browse files Browse the repository at this point in the history
  • Loading branch information
rijul-ahuja committed Oct 24, 2016
1 parent 113d367 commit 96be211
Show file tree
Hide file tree
Showing 8 changed files with 62 additions and 105 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@
/build
/captures
/app/src/main/java/me/rijul/knockcode/CustomLogger.java
crowdin.yaml
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ android {
applicationId "me.rijul.knockcode"
minSdkVersion 21
targetSdkVersion 22
versionCode 41
versionName "1.4.1"
versionCode 43
versionName "1.4.3"
}
buildTypes {
release {
Expand Down
66 changes: 4 additions & 62 deletions app/src/main/java/me/rijul/knockcode/SettingsActivity.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
package me.rijul.knockcode;

import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.os.AsyncTask;
Expand All @@ -19,14 +15,12 @@
import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
import android.preference.SwitchPreference;
import android.provider.Settings;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.Toast;

import java.util.Map;

Expand All @@ -36,23 +30,13 @@
public class SettingsActivity extends Activity {
private static SettingsHelper mSettingsHelper;
private static boolean MODULE_INACTIVE = true;
BroadcastReceiver deadReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
invalidateOptionsMenu();
}
};
ProgressDialog mProgressDialog;

@Override
public SharedPreferences getSharedPreferences(String name, int mode) {
return SettingsHelper.getWritablePreferences(getApplicationContext());
}

public SharedPreferences getSharedPreferences(String name, int mode, boolean original) {
return super.getSharedPreferences(name, mode);
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Expand Down Expand Up @@ -120,33 +104,6 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
return true;
}

@Override
public void onPause() {
super.onPause();
unregisterReceiver(deadReceiver);
}

@Override
public void onResume() {
super.onResume();
registerReceiver(deadReceiver, new IntentFilter(BuildConfig.APPLICATION_ID + ".DEAD"));
try {
if (android.provider.Settings.Secure.getInt(getContentResolver(), Settings.Secure.LOCK_PATTERN_ENABLED) == 0) {
View patternActive = findViewById(R.id.pattern_inactive);
patternActive.setVisibility(View.VISIBLE);
patternActive.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("android.app.action.SET_NEW_PASSWORD");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
});
} else
findViewById(R.id.pattern_inactive).setVisibility(View.GONE);
} catch (Settings.SettingNotFoundException ignored) {}
}

private int getXposedVersionCode() {
return BuildConfig.VERSION_CODE;
}
Expand Down Expand Up @@ -191,20 +148,10 @@ public void onCreate(Bundle savedInstanceState) {
findPreference(Utils.SETTINGS_CHANGE_CODE).setTitle(R.string.settings_change_code);
else
findPreference(Utils.SETTINGS_CUSTOM_SHORTCUTS).setEnabled(false);
findPreference(Utils.SETTINGS_CODE_FULLSCREEN).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
@SuppressLint("WorldReadableFiles")
@SuppressWarnings("deprecation")
public boolean onPreferenceChange(Preference preference, Object newValue) {
((SettingsActivity) getActivity()).getSharedPreferences(Utils.PREFERENCES_FILE, Context.MODE_WORLD_READABLE,
true).edit().putBoolean(Utils.SETTINGS_CODE_FULLSCREEN, (boolean) newValue).apply();
return true;
}
});
String[] editTextPrefereneces = {"settings_code_text_ready_value", "settings_code_text_correct_value",
String[] editTextPreferences = {"settings_code_text_ready_value", "settings_code_text_correct_value",
"settings_code_text_error_value", "settings_code_text_disabled_value",
"settings_code_text_reset_value"};
for(String key : editTextPrefereneces) {
for(String key : editTextPreferences) {
EditTextPreference etp = (EditTextPreference) findPreference(key);
etp.setSummary(etp.getText());
}
Expand All @@ -220,11 +167,7 @@ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preferen
else if (key.equals(Utils.SETTINGS_CHANGE_CODE)) {
startActivityForResult(new Intent(getActivity(), MainActivity.class), MainActivity.CHANGE_CODE);
return true;
} else if (key.equals(Utils.SETTINGS_RESTART_KEYGUARD)) {
Utils.restartKeyguard(getActivity());
return true;
}
else if (key.equals(Utils.SETTINGS_HIDE_LAUNCHER)) {
} else if (key.equals(Utils.SETTINGS_HIDE_LAUNCHER)) {
if (((SwitchPreference) preference).isChecked()) {
ComponentName componentName = new ComponentName(getActivity(), BuildConfig.APPLICATION_ID + ".MainActivity-Alias");
getActivity().getPackageManager().setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
Expand All @@ -233,8 +176,7 @@ else if (key.equals(Utils.SETTINGS_HIDE_LAUNCHER)) {
getActivity().getPackageManager().setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
}
return true;
} else if (key.equals(Utils.SETTINGS_CODE_FULLSCREEN))
Toast.makeText(getActivity(), R.string.settings_reboot_required, Toast.LENGTH_SHORT).show();
}
return false;
}

Expand Down
6 changes: 2 additions & 4 deletions app/src/main/java/me/rijul/knockcode/SettingsHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import android.provider.Settings.Secure;

import de.robv.android.xposed.XSharedPreferences;
import de.robv.android.xposed.XposedBridge;

public class SettingsHelper {
//these are for xposed
Expand Down Expand Up @@ -166,11 +165,10 @@ public boolean shouldShowCustomShortcutInstructions()
//these are done via hooks, so they will check if enabled

//fullscreen is stored unencrypted
public static boolean fullScreen() {return (new XSharedPreferences(BuildConfig.APPLICATION_ID)).
getBoolean(Utils.SETTINGS_CODE_FULLSCREEN, false);}
public boolean fullScreen() {return getBoolean(Utils.SETTINGS_CODE_FULLSCREEN, false);}
public boolean showDialog() {return getBoolean(Utils.SETTINGS_CODE_DIALOG, true) && !isDisabled();}
public XposedMod.UnlockPolicy getPolicy() {
return XposedMod.UnlockPolicy.valueOf(getString(Utils.SETTINGS_CODE_DIRECT_ENTRY_POLICY, "DEFAULT"));
return XposedMod.UnlockPolicy.valueOf(getString(Utils.SETTINGS_CODE_DIRECT_ENTRY_POLICY, "NEVER"));
}
public boolean forceNone() {return getBoolean(Utils.SETTINGS_CODE_FORCE_NONE, false) && !isDisabled();}

Expand Down
10 changes: 7 additions & 3 deletions app/src/main/java/me/rijul/knockcode/Utils.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
import java.io.IOException;
import java.util.ArrayList;

import de.robv.android.xposed.XposedBridge;

/**
* Created by rijul on 2/3/16.
*/
Expand Down Expand Up @@ -105,9 +107,7 @@ protected Void doInBackground(String... params) {
os.writeBytes("exit\n");
os.flush();
su.waitFor();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
Expand Down Expand Up @@ -168,4 +168,8 @@ public static ArrayList<Integer> stringToPasscode(String string) {
}
return passcode;
}

public static void XposedLog(String string) {
XposedBridge.log("[KnockCode] " + string);
}
}
68 changes: 43 additions & 25 deletions app/src/main/java/me/rijul/knockcode/XposedMod.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,15 @@
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.XModuleResources;
import android.graphics.Point;
import android.os.Build;
import android.provider.Settings.Secure;
import android.util.TypedValue;
import android.view.Display;
import android.view.Surface;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.ViewFlipper;

Expand Down Expand Up @@ -64,12 +69,10 @@ public void initZygote(StartupParam startupParam) throws Throwable {
public void handleInitPackageResources(XC_InitPackageResources.InitPackageResourcesParam resParam) throws Throwable {
if ((resParam.packageName.contains("android.keyguard")) || (resParam.packageName.contains("com.android.systemui"))) {
XModuleResources modRes = XModuleResources.createInstance(modulePath, resParam.res);
if (SettingsHelper.fullScreen()) {
XposedBridge.log("[KnockCode] Setting fullscreen!");
resParam.res.setReplacement(resParam.packageName, "dimen", "keyguard_security_height", modRes.fwd(R.dimen.replace_keyguard_security_max_height));
resParam.res.setReplacement(resParam.packageName, "dimen", "keyguard_security_view_margin", modRes.fwd(R.dimen.replace_keyguard_security_view_margin));
resParam.res.setReplacement(resParam.packageName, "dimen", "keyguard_security_width", modRes.fwd(R.dimen.replace_keyguard_security_max_height));
}
Utils.XposedLog("Setting resources to fullscreen!");
resParam.res.setReplacement(resParam.packageName, "dimen", "keyguard_security_view_margin", modRes.fwd(R.dimen.replace_keyguard_security_view_margin));
resParam.res.setReplacement(resParam.packageName, "dimen", "keyguard_security_width", modRes.fwd(R.dimen.replace_keyguard_security_max_height));
resParam.res.setReplacement(resParam.packageName, "dimen", "keyguard_security_max_height", modRes.fwd(R.dimen.replace_keyguard_security_max_height));
}
}

Expand All @@ -83,11 +86,11 @@ public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
XposedHelpers.findAndHookMethod(SettingsActivityClazz, "getXposedVersionCode",
XC_MethodReplacement.returnConstant(BuildConfig.VERSION_CODE));
} else if (lpparam.packageName.equals("com.htc.lockscreen")) {
XposedBridge.log("[KnockCode] HTC Device");
Utils.XposedLog("HTC Device");
createHooksIfNeeded("com.htc.lockscreen.keyguard");
hookMethods("com.htc.lockscreen.keyguard", lpparam);
} else if ((lpparam.packageName.contains("android.keyguard")) || (lpparam.packageName.contains("com.android.systemui"))) {
XposedBridge.log("[KnockCode] AOSPish Device");
Utils.XposedLog("AOSPish Device");
createHooksIfNeeded("com.android.keyguard");
hookMethods("com.android.keyguard", lpparam);
}
Expand Down Expand Up @@ -221,14 +224,21 @@ protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
Context mContext = ((FrameLayout) param.thisObject).getContext();
mContext.registerReceiver(broadcastReceiver, new IntentFilter(Utils.SETTINGS_CHANGED));
if ((mSettingsHelper==null) || (mSettingsHelper.isDisabled())) {
//find whichever view is enabled
View pinView = (View) callMethod(param.thisObject, "getSecurityView", param.args[0]);
ViewGroup.LayoutParams layoutParams = pinView.getLayoutParams();
//set width and height
layoutParams.height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 400, mContext.getResources().getDisplayMetrics());
layoutParams.width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 320, mContext.getResources().getDisplayMetrics());
pinView.setLayoutParams(layoutParams);
mKnockCodeView = null;
return;
}
Object securityMode = param.args[0];
Class<?> SecurityMode = XposedHelpers.findClass(keyguardPackageName + ".KeyguardSecurityModel$SecurityMode",
param.thisObject.getClass().getClassLoader());
Object patternMode = XposedHelpers.getStaticObjectField(SecurityMode, "Pattern");
if (!patternMode.equals(securityMode)) {
Object pinMode = XposedHelpers.getStaticObjectField(SecurityMode, "PIN");
if (!pinMode.equals(securityMode)) {
mKnockCodeView = null;
return;
}
Expand All @@ -237,28 +247,39 @@ protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
param.setResult(null);
return;
}

View oldView = (View) callMethod(param.thisObject, "getSecurityView", mCurrentSecuritySelection);
//LinearLayout eca = (LinearLayout) XposedHelpers.
// newInstance(XposedHelpers.findClass(keyguardPackageName + ".EmergencyCarrierArea", param.thisObject.getClass().getClassLoader()), mContext);
//eca.addView((Button) XposedHelpers.
// newInstance(XposedHelpers.findClass(keyguardPackageName + ".EmergencyButton",param.thisObject.getClass().getClassLoader()), mContext));
//eca.addView((TextView) XposedHelpers.
// newInstance(XposedHelpers.findClass(keyguardPackageName + ".CarrierText", param.thisObject.getClass().getClassLoader()), mContext));
mKnockCodeView = new KeyguardKnockView(mContext,param,mSettingsHelper,keyguardPackageName);
View newView = mKnockCodeView;

FrameLayout layout = (FrameLayout) param.thisObject;
int disableSearch = XposedHelpers.getStaticIntField(View.class, "STATUS_BAR_DISABLE_SEARCH");
layout.setSystemUiVisibility((layout.getSystemUiVisibility() & ~disableSearch));

// pause old view, and ignore requests from it
if (oldView != null) {
Object mNullCallback = getObjectField(param.thisObject, "mNullCallback");
callMethod(oldView, "onPause");
callMethod(oldView, "setKeyguardCallback", mNullCallback);
}

View pinView = (View) callMethod(param.thisObject, "getSecurityView", pinMode);
ViewGroup.LayoutParams layoutParams = pinView.getLayoutParams();
if (mSettingsHelper.fullScreen()) {
Utils.XposedLog("Setting view to fullscreen!");
Display display = ((WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int rotation = display.getRotation();
if (rotation==Surface.ROTATION_0 || rotation==Surface.ROTATION_180) {
layoutParams.height = size.y;
layoutParams.width = size.x;
} else {
layoutParams.height = size.x;
layoutParams.width = size.y;
}
} else {
layoutParams.height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 400, mContext.getResources().getDisplayMetrics());
layoutParams.width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 320, mContext.getResources().getDisplayMetrics());
}
newView.setLayoutParams(layoutParams);


//show new view, and set a callback for it
Object mCallback = getObjectField(param.thisObject, "mCallback");
callMethod(newView, "onResume", KeyguardKnockView.VIEW_REVEALED);
Expand Down Expand Up @@ -334,7 +355,6 @@ protected void beforeHookedMethod(MethodHookParam param) {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
//means either not init or not pattern, so we don't track it
if (mSettingsHelper==null || mKnockCodeView==null)
return;
CustomLogger.log(((Context) XposedHelpers.getObjectField(param.thisObject, "mContext")), "Lockscreen", "Device", "Screen turned on", null, -1);
Expand All @@ -349,7 +369,6 @@ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
//means either not init or not pattern, so we don't track it
if (mSettingsHelper==null || mKnockCodeView==null)
return;
CustomLogger.log(((Context) XposedHelpers.getObjectField(param.thisObject, "mContext")), "Lockscreen", "Device", "Screen turned off", null, -1);
Expand Down Expand Up @@ -418,5 +437,4 @@ private boolean shouldUnlock(XC_MethodHook.MethodHookParam param) {
}
return (currentPolicy == UnlockPolicy.NO_CLEARABLE_NOTIF ? notifClearableCount==0 : notifCount==0);
}

}
}
8 changes: 2 additions & 6 deletions app/src/main/res/xml/settings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,6 @@
android:targetPackage="me.rijul.knockcode"
android:targetClass="me.rijul.knockcode.AboutActivity"/>
</Preference>
<Preference
android:title="@string/settings_restart_keyguard"
android:key="settings_restart_keyguard">
</Preference>

<PreferenceCategory
android:title="@string/settings_app">
Expand Down Expand Up @@ -253,7 +249,7 @@
minimum="0"
maximum="1000"
interval="50"
android:defaultValue="500"
android:defaultValue="250"
monitorBoxEnabled="true"
monitorBoxUnit="ms" />
<me.rijul.knockcode.SeekBarPreference
Expand All @@ -262,7 +258,7 @@
minimum="0"
maximum="1000"
interval="50"
android:defaultValue="300"
android:defaultValue="250"
monitorBoxEnabled="true"
monitorBoxUnit="ms" />
</PreferenceScreen>
Expand Down
4 changes: 1 addition & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,4 @@
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
#Mon Apr 11 12:37:07 IST 2016
systemProp.http.proxyHost=proxy22.iitd.ernet.in
systemProp.http.proxyPort=3128
#Mon Apr 11 12:37:07 IST 2016

0 comments on commit 96be211

Please sign in to comment.