This list is certainly not definitive but if you are not in the Computer
Sciences by way of study or profession then the info below should help
you get started...
Codecademy: Learn to code
www.codecademy.com/
Lessons to learn to code interactively.
Learn | Code.org
code.org/learn
Choose from 3 activities designed to give you your first experience programming.
Code Avengers: learn to code games, apps and websites
www.codeavengers.com/
Learn how to code games, apps and websites with fun and effective interactive games. HTML, CSS and JavaScript ...
Hurricane Electric Interactive Programming
http://adf.ly/1dq5vW
Interactive Programming Courses. Perl · PHP · Ruby · Python · SQL. Web Development Courses. HTML · CSS ...
Interactive Python Tutorial
www.learnpython.org/
LearnPython.org is a free interactive Python tutorial for people who want to learn Python, fast.
RubyMonk - Interactive Ruby tutorials
http://adf.ly/1dq65w
Free, interactive tutorials to help you discover Ruby idioms, in your browser!
Code School: Learn by Doing
http://adf.ly/1dq67F
Code School teaches web technologies in the comfort of your browser with video lessons, coding challenges, and ...
List of interactive programming websites - Reddit
http://www.reddit.com/r/learnprogram...ming_websites/
10 September 2016
Unpacking, Editing, Packing ROMS GUIDE - Host Zero
First download the tools from the link below.
1. system.img
2. system.new.dat
1.Unpacking Repacking system.img
1. Paste your system.img in tools folder
2. Open cmd.exe
3. Type:
Code:
mkdir <your_folder_name> ImgExtactor <raw_sparse.img> system -i ex: ImgExtactor system.img system -i
5. Now edit the files in system folder as your convenience.
6. Now open properties of folder you have created see the size of folder.
7. Now lets pack the image back, open the minimized command window.
Code:
make_ext4fs -s -l <size_of_your_folder+100>M -a system <name_of_packing_image>.img <your_folder_name>/ ex: make_ext4fs -s -l 512M -a system my_new_system.img system/
2.Unpacking Repacking system.new.dat
1. Paste your system.new.dat, system.transfer.list and file_contexts in tools folder.
2. Open cmd.exe
3. Type:
Code:
sprs2ext system.transfer.list <name_of_system>.new.dat ex: sprs2ext system.transfer.list system.new.dat
Code:
mkdir <your_folder_name> ImgExtactor <raw_sparse.new.img> system -i ex: ImgExtactor system.img system -i
6. Edit the extracted files.
7. Open properties of the extracted folder and check the size of folder
7. Now open minimized command window.
Code:
make_ext4fs -T 0 -S file_contexts -l <size_of_folder+100>M -a system <name_of_packing_image>.img <your_folder_name>/ ex: make_ext4fs -T 0 -S file_contexts -I 512M -a system my_new_system.img system/
Code:
rimg2sdat <your_raw_image>.img ex: rimg2img my_new_system.img
CLICK HERE TO DOWNLOAD TOOLS
GUI - SignApk Jar File Tutorial to Sign and Align APKs
Hello guys,
I am here with an easy to use application about creating your own keystore to sign APKs and align them.
Requirements:
Please note that you need to have JDK installed in system for jar files to work.
INITIAL SETUPS
CREATE KEYSTORE
SIGN APK
Now its time to sign the APK. - Click on "Signer" Tab.
ALIGN APK
Click on APK Alignment Tab
If you get java,util exception error, you need to use JDK-6 or lower and give its path in JDK target adress bar
JDK-7 and plus have changed something for which APK signer doesnt sign APKs
Plz click Thanks buttong if it helped u
I am here with an easy to use application about creating your own keystore to sign APKs and align them.
Requirements:
- JDK - Download from www.java.com
- sign.jar - Download HERE - APK-Signer 1.8.3 by Hai Bison - working link as of 05/03/2016
Please note that you need to have JDK installed in system for jar files to work.
INITIAL SETUPS
- Assuming that you have JDK installed, download sign.jar and extract in anywhere you can navigate easy.
- I have it in "C:/apktool"
- Open Command Prompt (click Start > type cmd in search box and press enter)
- Navigate to folder where you extracted jar file, in my case "c:\>cd apktool".
- Type, "java -jar sign.jar"
- The writing things ends here and you will see application opened in GUI - as follows
CREATE KEYSTORE
- Now, we will need to first create a keystore file,
- Click on "Save As" in Target Tab and name the file anything, i named it "signedOne"
- Click on Save Button
- Now We will need to fill the form a little,
- In Password, type any password you may remember
- in Alias, type any name, usually that should be similar to your UNSIGNED apk file name
- Give an Alias Password (for ease, keep it same as password above)
- In Name field, Type your first and last name,
- This is the minimum required in form, if you want to fill full form, thats upto you.
- Click on Button "Generate Keyfile"
- Wait until message appears, "Keyfile Generated Successfully". Press OK
SIGN APK
Now its time to sign the APK. - Click on "Signer" Tab.
- First, Click on button "Load Keyfile"
- Browse for the same keystore file you created, in our case, if you kept the name same as mine, that will be "signedOne.keystore"
- Type the password you gave while creating the keystore file.
- You will see alias name appearing automatically below if password was correct.
- type the alias password you gave earlier.
- Click on "Load Target File" and browse for the APK file you want to sign. In my case "whatsapp.apk"
- Click on "Sign" button
- Wait until the dialog appears, "File Signed"
- You will see a new file whatsapp_SIGNED_UNALIGNED.apk in the same folder where whatsapp.apk was already present
ALIGN APK
Click on APK Alignment Tab
- Click on "Load APK file" button
- Browse for "whatsapp_SIGNED_UNALIGNED.apk
- Click on "Align" button
- Wait until the message appears "Alignment done, output file: "whatsapp_SIGNED_ALIGNED.apk"
- Optional - If you want to verify the alignment, click on "whatsapp_SIGNED_UNALIGNED" button - note that after the alignment, the button name remained same
- browse for "whatsapp_SIGNED_ALIGNED.apk
- Click on button verify
- it will give you a message, "Verification succesful"
TROUBLESHOOTING
If you get java,util exception error, you need to use JDK-6 or lower and give its path in JDK target adress bar
JDK-7 and plus have changed something for which APK signer doesnt sign APKs
Plz click Thanks buttong if it helped u
Tutorial bikin Module Xposed
Tutorial 1 - Setting up
There are a few requirements for making an Xposed Module.
*Eclipse, or Java IDE of your choice, with Android SDK and devlopment enviornment set up. I'm not going to cover that in this tutorial
*Knowledge of Java programming language
*An android phone which supports Xposed, with Xposed installed and working for testing on
*Some knowledge of Android development
*Time
*
An idea of course
For the purpose of this tutorial, we will be creating a two modules (using two different features of the xposed bridge). The first will replace the clock in the status bar with a smiley face. The second will change the height of the navigation bar. I will be using Eclipse Kepler in this tutorial.
NEW: this tool will setup the project for you! http://forum.xda-developers.com/show....php?t=2712825
Firstly you must set up an Android project as normal. For the target API, use the one you have on your test device. Mine is Android 4.0.4, API 15 so I will use that. Name the project Smiley Clock, and choose a package name.
We won't need an Activity for this module, so don't create one
OK, that's the project created. Now we need to make Xposed recognize this as a module. Add the following meta tags to your Android Manifest, within the Application tag
Code:
<meta-data android:name="xposedmodule" android:value="true" /> <meta-data android:name="xposedminversion" android:value="30" /> <meta-data android:name="xposeddescription" android:value="Add a smiley face" />
At this point you can run the application on your test device. It should show up in the Xposed Installer app as a module. Check the box to enable your module and reboot your device. Of course, the module won't do anything yet!
A good idea at this point would be to add a new filter to your logcat to track error messages from Xposed. Add a filter named "Xposed" and filter by the tag name "Xposed"
You will now see messages from the Xposed Framework
There will be an error for your module about xposed_init file, don't worry, getting to that!
Make a new package (same as package name we used when making the Android Project) and within that package make a class. Call it anything, I'll call mine Main.
Secondly add the XposedBridge API jar. This can be found on this thread on XDA. Add the jar to the root directory of the project, NOT the lib directory. Right click - build path - add to build path. Do not export it in the Order and Export tab.
Now create a file in the assets directory called xposed_init. Inside this file, type:
packagename.classname
where packname is the name of your package and class name is the name of your class. So in my case I will type
com.hamzah.smileyclock.Main
This tells Xposed where to look for the code for the module. You file tree should now look like this
Now the project is set up. In the next tutorial, we will look at how Xposed works, this will help you understand how to make modules.
Tutorial 2 - Brief introduction to how Xposed works
This tutorial is not really a true tutorial (gasp!). It will outline some basic features of Xposed which will help you understand future tutorials.
Xposed allows a developer to access and modify the code for system applications. For example, one useful feature is the "find and hook" feature. This allows a developer to find a method inside another application and add their own code after it. So you could find the method in the Android source code that alerts the user when the wrong pattern is entered, and then instruct the system to hook onto that method and edit the alert to say something else. Another thing that Xposed allows us to do is replace resources. This includes Strings dimensions, drawables and much more. So we could edit the dimension of the navigation bar height (which we will in later tutorials) by replacing the resource which tells it what height to be.
The next tutorial, we will start exploring the Android code and see what methods to hook to replace the clock with a smiley face!
Tutorial 3 - Exploring the target and modifying it
Ok so at this point, you should have an Xposed mod thatdoes nothing. The next step is to work out exactly what we want it to do! We want it to edit the clock, by hooking the method (read the last tutorial for more informtion on this). So the first step is to find that method.
So visit http://grepcode.com/project/reposito...droid/android/ in your browser to view Android's source code. If (in Android 4+) you browse to com.android.systemui.statusbar.policy.Clock.java
you will find the class that controls the clock. In here, there is a handy method called updateClock() which ppears to be controlling what gets written to the TextView in the statusbar (this whole class extends TextView). Now if you know how to make Android apps (which you should) you will be familiar with TextView. We can manipulate this TextView by changing colour, text, font, size etc, as you could with a TextView in a normal Android app.
Of course this was easy, but depending on exactly what you want your module to do, you may have to hook many methods. If you've ever modded APK's, you'll know what i mean ;)
This was another short tutorial, in the next one we will start coding the module
Tutorial 4 - The Code
In this tutorial we can finally get to some code. Exciting right?
OK so we now have the following information
*We can hook methods using Xposed
*There happens to be a method which writes text to the clock
*We can hook this method to edit the text
So first of all, fire up your eclipse workspace and have you Xposed class implement IXposedHookLoadPackage
Then add unimplemented methods.
Your class should now look like:
Code:
package com.hamzah.smileyclock; import de.robv.android.xposed.IXposedHookLoadPackage; import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam; public class Main implements IXposedHookLoadPackage { @Override public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable { } }
Add this inside your method
Code:
if (!lpparam.packageName.equals("com.android.systemui"))//check if the package being loaded is systemUI return; //All code here is only called if it is indeed SystemUI
Code:
findAndHookMethod("com.android.systemui.statusbar.policy.Clock", lpparam.classLoader, "updateClock", new XC_MethodHook() { @Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { } });
You must also add the following imports statements
Code:
import de.robv.android.xposed.IXposedHookLoadPackage; import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam; import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;
The afterHookedMethod allows us to add our own code after the system method is executed, so in this case, the code to add a smiley face will go here. The MethodHookParam allows us to modify the TextView of the method we are hooking. So we need to get hold of that TextView, add this code
Code:
TextView tv = (TextView) param.thisObject;
Code:
tv.setText(":)");
Code:
tv.appendText(":)");
Now deploy the app to your test device, and reboot. You should see a smiley face in place of the clock!
Full Code
Code:
package com.hamzah.smileyclock; import static de.robv.android.xposed.XposedHelpers.findAndHookMethod; import android.widget.TextView; import de.robv.android.xposed.IXposedHookLoadPackage; import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam; public class Main implements IXposedHookLoadPackage { @Override public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable { if (!lpparam.packageName.equals("com.android.systemui")) return; findAndHookMethod("com.android.systemui.statusbar.policy.Clock", lpparam.classLoader, "updateClock", new XC_MethodHook() { @Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { TextView tv = (TextView) param.thisObject; tv.setText(":)"); } }); } }
Tutorial 5 - Replacing Resources
Xposed allows us to replace resources such as String, int, boolean, dimen, or even drawables. In this tutorial we will enable/disable screen wake-up on unplug and in the next one, replace the dimen of navigation bar height and width to make it half size. Simple resources like int and String can be replaced by passing the new value as a parameter but more complex ones like drawable and dimen must be referenced from your own resources. Don't worry, I'll explain it all!
First, we will replace a boolean which tells the system whether or not to wake the screen on unplug. There is a boolean in the framework-res.apk (found in /system/framework) which tells the system this information. We can used Xposed to edit this value, without touching the APK. My phone's default is false so I'm going to make it true, if yours is already true, make it false to make it more noticeable. In a future tutorial, when we learn saving preferences, we will add the ability for the user to set the value. For now, it will be hard coded.
Firstly set up a new project as in tutorial 1. Call it anything. Again, no activity or icon required, though you might want an icon anyway.
Have your class implement IXposedHookZygoteInit
and add unimplemented methods. This is called before anything else and we will use it for replacing our resource.
Add this code inside the initZygote method
Code:
XResources.setSystemWideReplacement("android", "bool", "config_unplugTurnsOnScreen", false);
Now when you run this module, enable and reboot, you should find that if you plug in a charger, turn off the screen, and unplug it, nothing will happen. If you were to change it to TRUE instead of FALSE, when you unplugged, it would wake the screen.
In the text tutorial, we will replace the navigation bar height
Tutorial 6 - Complex Resources
In this tutorial we will change the height of the navigation bar to 36dp, normal is 48dp. Much is the same as last time, but there are a few differences. Once again, set up a new project. Have your module class implement IXposedHookZygoteInit once again. Also implement IXposedHookInitPackageResources
Add the unimplemented methods.
Make a new variable inside the initZygote method:
Code:
String MODULE_PATH = startupParam.modulePath;
Code:
if (!resparam.packageName.equals("android")) return;
Add:
Code:
XModuleResources modRes = XModuleResources.createInstance(MODULE_PATH, resparam.res);
Next we need a dimen resource to forward as the height of the navigation bar. Make a new XML files inside /values called dimens.xml. Add this inside it
Code:
36dp
Code:
XResources.setSystemWideReplacement("android", "dimen", "navigation_bar_height", modRes.fwd(R.dimen.navigationbarSize));
At this point, when you deploy the module, enable it and reboot, your navigation bar should be noticeably smaller.
In the next tutorial we will look at creating and user interfaces and saving data in ways that both interface and module can read and write to. We will be using the mod we made in tutorial 4, and allow the user to define text rather than have a smiley face.
Tutorial 7 - User Interfaces and Preferences
Open up the SmileyClock we made in Tutorial 4. We did not make an Activity so make one now, File>New>Android Activity. Make sure you make it a Launcher Activity. We need to widgets in our UI, a textbox and an Apply button. I'm not going to cover making these, just make sure you have a method called when the button is pressed. Make the EditText id "input" so it will be easier to follow the tutorial because that is what i am making mine.
When the apply button is pressed in my case this method is called
Code:
public void apply(){ EditText et = (EditText) findViewById(R.id.input); String input = et.getText().toString(); }
Code:
SharedPreferences pref = getSharedPreferences("user_settings", MODE_WORLD_READABLE);
Code:
Editor editor = pref.edit(); editor.putString("user_text", input);
Code:
tv.setText(":)");
Code:
XSharedPreferences pref = new XSharedPreferences("com.hamzah.smileyclock", "user_settings"); //Gets the shared preference String text = pref.getString("user_text", ""); //reads the value which is saves, using nothing as default value to use if nothing is saved tv.setText(text); //sets the text to saved value
In the next tutorial we will cover modifying layouts
Tutorial 8 - Modifying Layouts
Xposed lets us modify layouts in other apps. In this tutorial, we will modify the navigation bar with various tweaks. Firstly we will make the background blue. So make a new Xposed Project and have your module class implement IXposedHookInitPackageResources. This gives is a parameter that can be used for modifying layouts. Add the unimplemented method and add this code inside the method
Code:
resparam.res.hookLayout("com.android.systemui", "layout", "navigation_bar", new XC_LayoutInflated() { @Override public void handleLayoutInflated(LayoutInflatedParam liparam) throws Throwable { } });
Code:
@Override public void handleLayoutInflated(LayoutInflatedParam liparam) throws Throwable { View navbar = (View) liparam.view.findViewById( liparam.res.getIdentifier("nav_buttons", "id", "com.android.systemui")); }
Code:
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.phone.NavigationBarView android:background="#ff000000" android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
<FrameLayout android:id="@id/rot0" android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:orientation="horizontal" android:id="@id/nav_buttons" android:clipChildren="false" android:clipToPadding="false" android:layout_width="fill_parent" android:layout_height="fill_parent" android:animateLayoutChanges="true">
<View android:visibility="invisible" android:layout_width="40.0dip" android:layout_height="fill_parent" android:layout_weight="0.0" />
<com.android.systemui.statusbar.policy.KeyButtonView android:id="@id/back" android:layout_width="80.0dip" android:layout_height="fill_parent" android:src="@drawable/ic_sysbar_back" android:layout_weight="0.0" android:contentDescription="@string/accessibility_back" systemui:keyCode="4" systemui:glowBackground="@drawable/ic_sysbar_highlight" />
<View android:visibility="invisible" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" />
<com.android.systemui.statusbar.policy.KeyButtonView android:id="@id/home" android:layout_width="80.0dip" android:layout_height="fill_parent" android:src="@drawable/ic_sysbar_home" android:layout_weight="0.0" android:contentDescription="@string/accessibility_home" systemui:keyCode="3" systemui:keyRepeat="false" systemui:glowBackground="@drawable/ic_sysbar_highlight" />
<View android:visibility="invisible" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" />
<com.android.systemui.statusbar.policy.KeyButtonView android:id="@id/recent_apps" android:layout_width="80.0dip" android:layout_height="fill_parent" android:src="@drawable/ic_sysbar_recent" android:layout_weight="0.0" android:contentDescription="@string/accessibility_recent" systemui:glowBackground="@drawable/ic_sysbar_highlight" />
<com.android.systemui.statusbar.policy.KeyButtonView android:id="@id/menu" android:visibility="invisible" android:layout_width="40.0dip" android:layout_height="fill_parent" android:src="@drawable/ic_sysbar_menu" android:layout_weight="0.0" android:contentDescription="@string/accessibility_menu" systemui:keyCode="82" systemui:glowBackground="@drawable/ic_sysbar_highlight" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:id="@id/lights_out" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="fill_parent">
<ImageView android:layout_width="80.0dip" android:layout_height="fill_parent" android:layout_marginLeft="40.0dip" android:src="@drawable/ic_sysbar_lights_out_dot_small" android:scaleType="center" android:layout_weight="0.0" />
<View android:visibility="invisible" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" />
<ImageView android:layout_width="80.0dip" android:layout_height="fill_parent" android:src="@drawable/ic_sysbar_lights_out_dot_large" android:scaleType="center" android:layout_weight="0.0" />
<View android:visibility="invisible" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" />
<ImageView android:layout_width="80.0dip" android:layout_height="fill_parent" android:layout_marginRight="40.0dip" android:src="@drawable/ic_sysbar_lights_out_dot_small" android:scaleType="center" android:layout_weight="0.0" />
</LinearLayout>
<View android:layout_gravity="top" android:id="@id/deadzone" android:clickable="true" android:layout_width="fill_parent" android:layout_height="@dimen/navigation_bar_deadzone_size" />
</FrameLayout>
<FrameLayout android:id="@id/rot90" android:paddingTop="0.0dip" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical" android:id="@id/nav_buttons" android:clipChildren="false" android:clipToPadding="false" android:layout_width="fill_parent" android:layout_height="fill_parent" android:animateLayoutChanges="true">
<com.android.systemui.statusbar.policy.KeyButtonView android:id="@id/menu" android:visibility="invisible" android:layout_width="fill_parent" android:layout_height="40.0dip" android:src="@drawable/ic_sysbar_menu_land" android:layout_weight="0.0" android:contentDescription="@string/accessibility_menu" systemui:keyCode="82" systemui:glowBackground="@drawable/ic_sysbar_highlight_land" />
<com.android.systemui.statusbar.policy.KeyButtonView android:id="@id/recent_apps" android:layout_width="fill_parent" android:layout_height="80.0dip" android:src="@drawable/ic_sysbar_recent_land" android:layout_weight="0.0" android:contentDescription="@string/accessibility_recent" systemui:glowBackground="@drawable/ic_sysbar_highlight_land" />
<View android:visibility="invisible" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" />
<com.android.systemui.statusbar.policy.KeyButtonView android:id="@id/home" android:layout_width="fill_parent" android:layout_height="80.0dip" android:src="@drawable/ic_sysbar_home_land" android:layout_weight="0.0" android:contentDescription="@string/accessibility_home" systemui:keyCode="3" systemui:keyRepeat="false" systemui:glowBackground="@drawable/ic_sysbar_highlight_land" />
<View android:visibility="invisible" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" />
<com.android.systemui.statusbar.policy.KeyButtonView android:id="@id/back" android:layout_width="fill_parent" android:layout_height="80.0dip" android:src="@drawable/ic_sysbar_back_land" android:layout_weight="0.0" android:contentDescription="@string/accessibility_back" systemui:keyCode="4" systemui:glowBackground="@drawable/ic_sysbar_highlight_land" />
<View android:visibility="invisible" android:layout_width="fill_parent" android:layout_height="40.0dip" android:layout_weight="0.0" />
</LinearLayout>
<LinearLayout android:orientation="vertical" android:id="@id/lights_out" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="fill_parent">
<ImageView android:layout_width="fill_parent" android:layout_height="80.0dip" android:layout_marginTop="40.0dip" android:src="@drawable/ic_sysbar_lights_out_dot_small" android:scaleType="center" android:layout_weight="0.0" />
<View android:visibility="invisible" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" />
<ImageView android:layout_width="fill_parent" android:layout_height="80.0dip" android:src="@drawable/ic_sysbar_lights_out_dot_large" android:scaleType="center" android:layout_weight="0.0" />
<View android:visibility="invisible" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" />
<ImageView android:layout_width="fill_parent" android:layout_height="80.0dip" android:layout_marginBottom="40.0dip" android:src="@drawable/ic_sysbar_lights_out_dot_small" android:scaleType="center" android:layout_weight="0.0" />
</LinearLayout>
<View android:layout_gravity="left" android:id="@id/deadzone" android:clickable="true" android:layout_width="@dimen/navigation_bar_deadzone_size" android:layout_height="fill_parent" />
</FrameLayout>
<View android:id="@id/rot270" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="fill_parent" />
</com.android.systemui.statusbar.phone.NavigationBarView>
Now we can call methods we could normally call on a View object. Add
Code:
navbar.setBackgroundColor(Color.BLUE);
Tutorial 9 - Methods with parameters
In an earlier tutorial, we covered hooking methods. But what if a method wants a parameter too?
Say if i want to hook onCreate(Bundle savedInstances) in com.android.settings
If i hook it using
Code:
findAndHookMethod("com.android.settings.Settings", lpparam.classLoader, "onCreate", new XC_MethodHook() { });
Code:
findAndHookMethod("com.android.settings.Settings", lpparam.classLoader, "onCreate", Bundle.class, new XC_MethodHook() { });
"android.os.Bundle"
Code:
findAndHookMethod("com.android.settings.Settings", lpparam.classLoader, "onCreate", "android.os.Bundle", new XC_MethodHook() { });
Subscribe to:
Posts (Atom)