It works great in Galaxy Grand Duos I9082L rooted (4.1.2). No problem with camera or lockscreen. Thanks! :good:
Don't know if you'd be able to... But I'd love to have the AOSP lock screen on my Note 3 with 4.3
Check my signature, look for "Enable camera on lockscreen"
As for Google Now, you'll need to use the "Show when phone locked" option in Xposed App Settings.
Noob here, how do I check for yr signature and 'enable camera'?
Ooh, I would love to have this on my Note 3 ( SM-N9005) aswell!
Sent from my SM-N9005 using Tapatalk
Not everyone needs or uses lockscreen shortcuts/weather on lockscreen. It's as simple as that really.or maybe to remove functionality just to look nice is a new trend that im a bit late to it?
java.lang.NoSuchMethodError: com.android.internal.policy.impl.FlipLockScreen(android.content.Context,android.content.res.Configuration,com.android.internal.widget.LockPatternUtils,com.android.internal.policy.impl.KeyguardUpdateMonitor,com.android.internal.policy.impl.KeyguardScreenCallback)#bestmatch
at de.robv.android.xposed.XposedHelpers.findConstructorBestMatch(XposedHelpers.java:410)
at com.mohammadag.aosplockscreen.AOSPLockScreen.handleLoadPackage(AOSPLockScreen.java:46)
at de.robv.android.xposed.IXposedHookLoadPackage$Wrapper.handleLoadPackage(IXposedHookLoadPackage.java:20)
at de.robv.android.xposed.callbacks.XC_LoadPackage.call(XC_LoadPackage.java:35)
at de.robv.android.xposed.callbacks.XCallback.callAll(XCallback.java:69)
at de.robv.android.xposed.XposedBridge$3.beforeHookedMethod(XposedBridge.java:170)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:459)
at com.android.server.ServerThread.run(Native Method)
package com.mohammadag.aosplockscreen;
import static de.robv.android.xposed.XposedHelpers.findClass;
import static de.robv.android.xposed.XposedHelpers.getObjectField;
import java.lang.reflect.Constructor;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XC_MethodReplacement;
import de.robv.android.xposed.XSharedPreferences;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.XC_MethodHook.MethodHookParam;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;
public class AOSPLockScreen implements IXposedHookLoadPackage {
public static XSharedPreferences prefs;
public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
if (!lpparam.packageName.equals("android"))
return;
prefs = new XSharedPreferences(AOSPLockScreen.class.getPackage().getName());
XposedHelpers.findAndHookMethod("com.android.internal.policy.impl.LockScreen", lpparam.classLoader,
"shouldEnableMenuKey", new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
param.setResult(false);
}
});
Class<?> lockPatternUtilsClass = findClass("com.android.internal.widget.LockPatternUtils", lpparam.classLoader);
Class<?> keyguardUpdateMonitorClass = findClass("com.android.internal.policy.impl.KeyguardUpdateMonitor", lpparam.classLoader);
Class<?> keyguardScreenCallbackClass = findClass("com.android.internal.policy.impl.KeyguardScreenCallback", lpparam.classLoader);
Class<?> contextClass = findClass("android.content.Context", lpparam.classLoader);
Class<?> configurationClass = findClass("android.content.res.Configuration", lpparam.classLoader);
Class<?> aospLockScreenClass = findClass("com.android.internal.policy.impl.LockScreen", lpparam.classLoader);
Class<?> flipLockScreenClass = findClass("com.android.internal.policy.impl.FlipLockScreen", lpparam.classLoader);
final Constructor<?> aospLockScreen = XposedHelpers.findConstructorBestMatch(aospLockScreenClass, contextClass, configurationClass,
lockPatternUtilsClass, keyguardUpdateMonitorClass, keyguardScreenCallbackClass);
final Constructor<?> flipLockScreen = XposedHelpers.findConstructorBestMatch(flipLockScreenClass, contextClass, configurationClass,
lockPatternUtilsClass, keyguardUpdateMonitorClass, keyguardScreenCallbackClass);
XposedHelpers.findAndHookMethod("com.android.internal.policy.impl.LockPatternKeyguardView",
lpparam.classLoader, "createLockScreen", new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
Object lockView = null;
if (prefs.getBoolean("aosp-lockscreen", true)) {
lockView = aospLockScreen.newInstance(getObjectField(param.thisObject, "mContext"),
getObjectField(param.thisObject, "mConfiguration"), getObjectField(param.thisObject, "mLockPatternUtils"),
getObjectField(param.thisObject, "mUpdateMonitor"), getObjectField(param.thisObject, "mKeyguardScreenCallback"));
} else {
lockView = flipLockScreen.newInstance(getObjectField(param.thisObject, "mContext"),
getObjectField(param.thisObject, "mConfiguration"), getObjectField(param.thisObject, "mLockPatternUtils"),
getObjectField(param.thisObject, "mUpdateMonitor"), getObjectField(param.thisObject, "mKeyguardScreenCallback"));
}
XposedHelpers.callMethod(param.thisObject, "initializeTransportControlView", lockView);
param.setResult(lockView);
}
});
}
}
Yes, please find a solution for Note3 4.3 - I hate the Samsung lockscreen.
Dear Developer
I appreciate very much every single collaboration to the community, no matter how little or big,
And p[lease take this comment with respect is not my intention to mock you work or anything, but im confused
You create a mod that removes weather widget, lock screen short cuts and information tickers, and that is just to have a "clean" lock screen ?
it's that all ? really?
I feel im very confused and Im missing something
or maybe to remove functionality just to look nice is a new trend that im a bit late to it?
Again with the mayor of respects
can you explain a bit more you mod
because i dont get it and probably is me being an idiot
cheers
@MohammadAG
Hi ive seen ur work on the XDA Portal and
wanted to port it to my device by adjusting small stuff
however it fails and according to log it says this
Code:java.lang.NoSuchMethodError: com.android.internal.policy.impl.FlipLockScreen(android.content.Context,android.content.res.Configuration,com.android.internal.widget.LockPatternUtils,com.android.internal.policy.impl.KeyguardUpdateMonitor,com.android.internal.policy.impl.KeyguardScreenCallback)#bestmatch at de.robv.android.xposed.XposedHelpers.findConstructorBestMatch(XposedHelpers.java:410) at com.mohammadag.aosplockscreen.AOSPLockScreen.handleLoadPackage(AOSPLockScreen.java:46) at de.robv.android.xposed.IXposedHookLoadPackage$Wrapper.handleLoadPackage(IXposedHookLoadPackage.java:20) at de.robv.android.xposed.callbacks.XC_LoadPackage.call(XC_LoadPackage.java:35) at de.robv.android.xposed.callbacks.XCallback.callAll(XCallback.java:69) at de.robv.android.xposed.XposedBridge$3.beforeHookedMethod(XposedBridge.java:170) at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:459) at com.android.server.ServerThread.run(Native Method)
while i am pretty sure i have this smali
ive attached my smali for u to look in it if u have time
Code:package com.mohammadag.aosplockscreen; import static de.robv.android.xposed.XposedHelpers.findClass; import static de.robv.android.xposed.XposedHelpers.getObjectField; import java.lang.reflect.Constructor; import de.robv.android.xposed.IXposedHookLoadPackage; import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XC_MethodReplacement; import de.robv.android.xposed.XSharedPreferences; import de.robv.android.xposed.XposedHelpers; import de.robv.android.xposed.XC_MethodHook.MethodHookParam; import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam; public class AOSPLockScreen implements IXposedHookLoadPackage { public static XSharedPreferences prefs; public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable { if (!lpparam.packageName.equals("android")) return; prefs = new XSharedPreferences(AOSPLockScreen.class.getPackage().getName()); XposedHelpers.findAndHookMethod("com.android.internal.policy.impl.LockScreen", lpparam.classLoader, "shouldEnableMenuKey", new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { param.setResult(false); } }); Class<?> lockPatternUtilsClass = findClass("com.android.internal.widget.LockPatternUtils", lpparam.classLoader); Class<?> keyguardUpdateMonitorClass = findClass("com.android.internal.policy.impl.KeyguardUpdateMonitor", lpparam.classLoader); Class<?> keyguardScreenCallbackClass = findClass("com.android.internal.policy.impl.KeyguardScreenCallback", lpparam.classLoader); Class<?> contextClass = findClass("android.content.Context", lpparam.classLoader); Class<?> configurationClass = findClass("android.content.res.Configuration", lpparam.classLoader); Class<?> aospLockScreenClass = findClass("com.android.internal.policy.impl.LockScreen", lpparam.classLoader); Class<?> flipLockScreenClass = findClass("com.android.internal.policy.impl.FlipLockScreen", lpparam.classLoader); final Constructor<?> aospLockScreen = XposedHelpers.findConstructorBestMatch(aospLockScreenClass, contextClass, configurationClass, lockPatternUtilsClass, keyguardUpdateMonitorClass, keyguardScreenCallbackClass); final Constructor<?> flipLockScreen = XposedHelpers.findConstructorBestMatch(flipLockScreenClass, contextClass, configurationClass, lockPatternUtilsClass, keyguardUpdateMonitorClass, keyguardScreenCallbackClass); XposedHelpers.findAndHookMethod("com.android.internal.policy.impl.LockPatternKeyguardView", lpparam.classLoader, "createLockScreen", new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { Object lockView = null; if (prefs.getBoolean("aosp-lockscreen", true)) { lockView = aospLockScreen.newInstance(getObjectField(param.thisObject, "mContext"), getObjectField(param.thisObject, "mConfiguration"), getObjectField(param.thisObject, "mLockPatternUtils"), getObjectField(param.thisObject, "mUpdateMonitor"), getObjectField(param.thisObject, "mKeyguardScreenCallback")); } else { lockView = flipLockScreen.newInstance(getObjectField(param.thisObject, "mContext"), getObjectField(param.thisObject, "mConfiguration"), getObjectField(param.thisObject, "mLockPatternUtils"), getObjectField(param.thisObject, "mUpdateMonitor"), getObjectField(param.thisObject, "mKeyguardScreenCallback")); } XposedHelpers.callMethod(param.thisObject, "initializeTransportControlView", lockView); param.setResult(lockView); } }); } }
Above are my modifications for my Acer S500 Cloudmobile rom
FlipLockScreen(Context context, Configuration configuration, LockPatternUtils utils, KeyguardUpdateMonitor monitor, KeyguardScreenCallback callback, Bitmap walpaper)
final Constructor<?> flipLockScreen = XposedHelpers.findConstructorBestMatch(flipLockScreenClass, contextClass, configurationClass,
lockPatternUtilsClass, keyguardUpdateMonitorClass, keyguardScreenCallbackClass, Bitmap.class);
public class AOSPLockScreen implements IXposedHookLoadPackage {
public static XSharedPreferences prefs;
public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
if (!lpparam.packageName.equals("android"))
return;
XposedHelpers.findAndHookMethod("com.android.internal.policy.impl.LockScreen", lpparam.classLoader,
"shouldEnableMenuKey", new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
param.setResult(false);
}
});
Class<?> lockPatternUtilsClass = findClass("com.android.internal.widget.LockPatternUtils", lpparam.classLoader);
Class<?> keyguardUpdateMonitorClass = findClass("com.android.internal.policy.impl.KeyguardUpdateMonitor", lpparam.classLoader);
Class<?> keyguardScreenCallbackClass = findClass("com.android.internal.policy.impl.KeyguardScreenCallback", lpparam.classLoader);
Class<?> contextClass = findClass("android.content.Context", lpparam.classLoader);
Class<?> configurationClass = findClass("android.content.res.Configuration", lpparam.classLoader);
Class<?> aospLockScreenClass = findClass("com.android.internal.policy.impl.LockScreen", lpparam.classLoader);
final Constructor<?> aospLockScreen = XposedHelpers.findConstructorBestMatch(aospLockScreenClass, contextClass, configurationClass,
lockPatternUtilsClass, keyguardUpdateMonitorClass, keyguardScreenCallbackClass);
XposedHelpers.findAndHookMethod("com.android.internal.policy.impl.LockPatternKeyguardView",
lpparam.classLoader, "createLockScreen", new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
Object lockView = null;
lockView = aospLockScreen.newInstance(getObjectField(param.thisObject, "mContext"),
getObjectField(param.thisObject, "mConfiguration"), getObjectField(param.thisObject, "mLockPatternUtils"),
getObjectField(param.thisObject, "mUpdateMonitor"), getObjectField(param.thisObject, "mKeyguardScreenCallback"));
XposedHelpers.callMethod(param.thisObject, "initializeTransportControlView", lockView);
param.setResult(lockView);
}
});
}
}
@SpaceCaker
The constructor for FlipLockScreen is different.
Code:FlipLockScreen(Context context, Configuration configuration, LockPatternUtils utils, KeyguardUpdateMonitor monitor, KeyguardScreenCallback callback, Bitmap walpaper)
That's the constructor from what I can see, so you should use:
Code:final Constructor<?> flipLockScreen = XposedHelpers.findConstructorBestMatch(flipLockScreenClass, contextClass, configurationClass, lockPatternUtilsClass, keyguardUpdateMonitorClass, keyguardScreenCallbackClass, Bitmap.class);
You'll also need to get the field mHomeScreenShot and pass it as a parameter to the constructor.
In any case, the reason for all this is to allow the user to quickly toggle between the lockscreens at runtime, which I never implemented. So you can throw all this away and simply do this:
Code:public class AOSPLockScreen implements IXposedHookLoadPackage { public static XSharedPreferences prefs; public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable { if (!lpparam.packageName.equals("android")) return; XposedHelpers.findAndHookMethod("com.android.internal.policy.impl.LockScreen", lpparam.classLoader, "shouldEnableMenuKey", new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { param.setResult(false); } }); Class<?> lockPatternUtilsClass = findClass("com.android.internal.widget.LockPatternUtils", lpparam.classLoader); Class<?> keyguardUpdateMonitorClass = findClass("com.android.internal.policy.impl.KeyguardUpdateMonitor", lpparam.classLoader); Class<?> keyguardScreenCallbackClass = findClass("com.android.internal.policy.impl.KeyguardScreenCallback", lpparam.classLoader); Class<?> contextClass = findClass("android.content.Context", lpparam.classLoader); Class<?> configurationClass = findClass("android.content.res.Configuration", lpparam.classLoader); Class<?> aospLockScreenClass = findClass("com.android.internal.policy.impl.LockScreen", lpparam.classLoader); final Constructor<?> aospLockScreen = XposedHelpers.findConstructorBestMatch(aospLockScreenClass, contextClass, configurationClass, lockPatternUtilsClass, keyguardUpdateMonitorClass, keyguardScreenCallbackClass); XposedHelpers.findAndHookMethod("com.android.internal.policy.impl.LockPatternKeyguardView", lpparam.classLoader, "createLockScreen", new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { Object lockView = null; lockView = aospLockScreen.newInstance(getObjectField(param.thisObject, "mContext"), getObjectField(param.thisObject, "mConfiguration"), getObjectField(param.thisObject, "mLockPatternUtils"), getObjectField(param.thisObject, "mUpdateMonitor"), getObjectField(param.thisObject, "mKeyguardScreenCallback")); XposedHelpers.callMethod(param.thisObject, "initializeTransportControlView", lockView); param.setResult(lockView); } }); } }
I'll update my code to do that, since I don't plan on implementing the runtime thing.
Edit: Done, try 1.1 and it should work
I installed the module, activated it and rebooted twice but I still have the TouchWiz lockscreen. Would really like this to work!
Yes, please find a solution for Note3 4.3 - I hate the Samsung lockscreen.
Dear Developer
I appreciate very much every single collaboration to the community, no matter how little or big,
And p[lease take this comment with respect is not my intention to mock you work or anything, but im confused
You create a mod that removes weather widget, lock screen short cuts and information tickers, and that is just to have a "clean" lock screen ?
it's that all ? really?
I feel im very confused and Im missing something
or maybe to remove functionality just to look nice is a new trend that im a bit late to it?
Again with the mayor of respects
can you explain a bit more you mod
because i dont get it and probably is me being an idiot
cheers
@MohammadAG
Hi ive seen ur work on the XDA Portal and
wanted to port it to my device by adjusting small stuff
however it fails and according to log it says this
Code:java.lang.NoSuchMethodError: com.android.internal.policy.impl.FlipLockScreen(android.content.Context,android.content.res.Configuration,com.android.internal.widget.LockPatternUtils,com.android.internal.policy.impl.KeyguardUpdateMonitor,com.android.internal.policy.impl.KeyguardScreenCallback)#bestmatch at de.robv.android.xposed.XposedHelpers.findConstructorBestMatch(XposedHelpers.java:410) at com.mohammadag.aosplockscreen.AOSPLockScreen.handleLoadPackage(AOSPLockScreen.java:46) at de.robv.android.xposed.IXposedHookLoadPackage$Wrapper.handleLoadPackage(IXposedHookLoadPackage.java:20) at de.robv.android.xposed.callbacks.XC_LoadPackage.call(XC_LoadPackage.java:35) at de.robv.android.xposed.callbacks.XCallback.callAll(XCallback.java:69) at de.robv.android.xposed.XposedBridge$3.beforeHookedMethod(XposedBridge.java:170) at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:459) at com.android.server.ServerThread.run(Native Method)
while i am pretty sure i have this smali
ive attached my smali for u to look in it if u have time
Code:package com.mohammadag.aosplockscreen; import static de.robv.android.xposed.XposedHelpers.findClass; import static de.robv.android.xposed.XposedHelpers.getObjectField; import java.lang.reflect.Constructor; import de.robv.android.xposed.IXposedHookLoadPackage; import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XC_MethodReplacement; import de.robv.android.xposed.XSharedPreferences; import de.robv.android.xposed.XposedHelpers; import de.robv.android.xposed.XC_MethodHook.MethodHookParam; import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam; public class AOSPLockScreen implements IXposedHookLoadPackage { public static XSharedPreferences prefs; public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable { if (!lpparam.packageName.equals("android")) return; prefs = new XSharedPreferences(AOSPLockScreen.class.getPackage().getName()); XposedHelpers.findAndHookMethod("com.android.internal.policy.impl.LockScreen", lpparam.classLoader, "shouldEnableMenuKey", new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { param.setResult(false); } }); Class<?> lockPatternUtilsClass = findClass("com.android.internal.widget.LockPatternUtils", lpparam.classLoader); Class<?> keyguardUpdateMonitorClass = findClass("com.android.internal.policy.impl.KeyguardUpdateMonitor", lpparam.classLoader); Class<?> keyguardScreenCallbackClass = findClass("com.android.internal.policy.impl.KeyguardScreenCallback", lpparam.classLoader); Class<?> contextClass = findClass("android.content.Context", lpparam.classLoader); Class<?> configurationClass = findClass("android.content.res.Configuration", lpparam.classLoader); Class<?> aospLockScreenClass = findClass("com.android.internal.policy.impl.LockScreen", lpparam.classLoader); Class<?> flipLockScreenClass = findClass("com.android.internal.policy.impl.FlipLockScreen", lpparam.classLoader); final Constructor<?> aospLockScreen = XposedHelpers.findConstructorBestMatch(aospLockScreenClass, contextClass, configurationClass, lockPatternUtilsClass, keyguardUpdateMonitorClass, keyguardScreenCallbackClass); final Constructor<?> flipLockScreen = XposedHelpers.findConstructorBestMatch(flipLockScreenClass, contextClass, configurationClass, lockPatternUtilsClass, keyguardUpdateMonitorClass, keyguardScreenCallbackClass); XposedHelpers.findAndHookMethod("com.android.internal.policy.impl.LockPatternKeyguardView", lpparam.classLoader, "createLockScreen", new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { Object lockView = null; if (prefs.getBoolean("aosp-lockscreen", true)) { lockView = aospLockScreen.newInstance(getObjectField(param.thisObject, "mContext"), getObjectField(param.thisObject, "mConfiguration"), getObjectField(param.thisObject, "mLockPatternUtils"), getObjectField(param.thisObject, "mUpdateMonitor"), getObjectField(param.thisObject, "mKeyguardScreenCallback")); } else { lockView = flipLockScreen.newInstance(getObjectField(param.thisObject, "mContext"), getObjectField(param.thisObject, "mConfiguration"), getObjectField(param.thisObject, "mLockPatternUtils"), getObjectField(param.thisObject, "mUpdateMonitor"), getObjectField(param.thisObject, "mKeyguardScreenCallback")); } XposedHelpers.callMethod(param.thisObject, "initializeTransportControlView", lockView); param.setResult(lockView); } }); } }
Above are my modifications for my Acer S500 Cloudmobile rom