From bdcec5469bb54fcf54eb4bc96066c406694bbf87 Mon Sep 17 00:00:00 2001 From: OXINARF Date: Tue, 28 May 2013 01:10:53 +0100 Subject: [PATCH] Small changes Make compatible with (Samsung phones with) Android 4.2.2 --- AndroidManifest.xml | 6 +- .../oxinarf/simnumberchanger/XposedMod.java | 130 ++++++++++-------- 2 files changed, 75 insertions(+), 61 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 9fc04c0..96ff8ee 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="2" + android:versionName="1.1" > - + hookClass; + + try { + hookClass = XposedHelpers.findClass("com.android.phone.PhoneGlobals", lpparam.classLoader); + } + catch (ClassNotFoundError e) { + try { + hookClass = XposedHelpers.findClass("com.android.phone.PhoneApp", lpparam.classLoader); + } + catch (ClassNotFoundError ex) { + XposedBridge.log("Classes don't exist - version not supported"); + return; + } + } + + File prefFile = new File(Environment.getDataDirectory(), "data/" + MY_PACKAGE_NAME + "/shared_prefs/" + "MainActivity.xml"); + + XSharedPreferences prefs; + + if (prefFile.exists()) + prefs = new XSharedPreferences(MY_PACKAGE_NAME, "MainActivity"); + else + return; - @Override + final String number = prefs.getString("number", null); + + if(number == null) + return; + + XposedHelpers.findAndHookMethod(hookClass, "onCreate", new XC_MethodHook() { @Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { - File prefFile = new File(Environment.getDataDirectory(), "data/" + MY_PACKAGE_NAME + "/shared_prefs/" + "MainActivity.xml"); - - if (prefFile.exists()) - prefs = AndroidAppHelper.getSharedPreferencesForPackage(MY_PACKAGE_NAME, "MainActivity", Context.MODE_PRIVATE); - else - return; - - number = prefs.getString("number", null); - - if(number == null) + final Object phone; + + try { + phone = XposedHelpers.getObjectField(param.thisObject, "phone"); + } + catch (NoSuchFieldError ex) { + XposedBridge.log("Field 'phone' doesn't exist - version not supported"); return; - - phone = XposedHelpers.getObjectField(param.thisObject, "phone"); - + } + if(phone == null) { XposedBridge.log("Phone was null, it wasn't supposed!"); return; } - - tm = (TelephonyManager) ((Application) param.thisObject).getSystemService("phone"); - + + final TelephonyManager tm = (TelephonyManager) ((Context) param.thisObject).getSystemService("phone"); + new Thread(new Runnable() { - public void run() { - - for(int simState = tm.getSimState(); simState != TelephonyManager.SIM_STATE_READY; simState = tm.getSimState()) { - try { - Thread.sleep(5000); - } catch (InterruptedException e) {} - } - - String tag = (String) XposedHelpers.callMethod(phone, "getLine1AlphaTag"); - - if(tag == null || tag.isEmpty() || tag.trim().equals("")) { - tag = "Line 1"; - XposedBridge.log("Tag was empty - Line 1 now"); - } - - String actualNumber = (String) XposedHelpers.callMethod(phone, "getLine1Number"); - - XposedBridge.log("Actual Number is: " + actualNumber); - - if(number.equals(actualNumber)) - return; - - XposedBridge.log("Going to write SIM number (" + number + ") now!"); - - XposedHelpers.callMethod(phone, "setLine1Number", tag, number, null); - } + public void run() { + + for(int simState = tm.getSimState(); simState != TelephonyManager.SIM_STATE_READY; simState = tm.getSimState()) { + try { + Thread.sleep(5000); + } catch (InterruptedException e) {} + } + + String tag = (String) XposedHelpers.callMethod(phone, "getLine1AlphaTag"); + + if(tag == null || tag.isEmpty() || tag.trim().equals("")) { + tag = "Line 1"; + XposedBridge.log("Tag was empty - 'Line 1' now"); + } + + String actualNumber = (String) XposedHelpers.callMethod(phone, "getLine1Number"); + + XposedBridge.log("Actual Number is: " + actualNumber); + + if(number.equals(actualNumber)) + return; + + XposedBridge.log("Going to write SIM number (" + number + ") now!"); + + XposedHelpers.callMethod(phone, "setLine1Number", tag, number, null); + } }).start(); - } + } }); } }