By reverse engineering of android app (.apk file) we can get following :
Showing posts with label Android. Show all posts
Showing posts with label Android. Show all posts
Android Reverse Engineering - decompile .apk-.dex-.jar-.java
By reverse engineering of android app (.apk file) we can get following :
Android: Killing a running process with processid(pid) and package name
After analysis of
source code of Android's package manager application, i found forceStopPackage
method is used by system image to kill the processes- which uses android.Manifest.permission.FORCE_STOP_PACKAGES permission.
But problem is that this permission is granted only for system level application.
Android: Code for detecting if specific application or service running
For checking a application is running or not :
For checking a service is running or not :
Required Permission :
<uses-permission android:name="android.permission.GET_TASKS" />
public static boolean isThisApplicationRunning(final Context context, final String appPackage) {
if (appPackage == null) {
return false;
}
final ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
final List<RunningAppProcessInfo> runningAppProcesses = manager.getRunningAppProcesses();
for (final RunningAppProcessInfo app : runningAppProcesses) {
if (appPackage.equals(app.processName)) {
return true;
}
}
return false;
}
For checking a service is running or not :
public static boolean isThisServiceRunning( final Context context, final String servicePackageName) {
final ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
for (final RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (servicePackageName.equals(service.service.getClassName())) {
return true;
}
}
return false;
}
Required Permission :
<uses-permission android:name="android.permission.GET_TASKS" />
Android code for reading phone contacts detail
Here is code for reading all phone contacts(phone number, email etc with their type) stored in android phone programmatically.
Android Reading Call Log from Phone Programmatically
Here is the code to read all call log data (MISSED, OUTGOING, INCOMING) from android phone programmatically.
Permission in AndroidManifest.xml:
Add the READ_CONTACTS permission to your AndroidManifest.xml:
<uses-permission android:name="android.permission.READ_CONTACTS" />
Code :
Permission in AndroidManifest.xml:
Add the READ_CONTACTS permission to your AndroidManifest.xml:
<uses-permission android:name="android.permission.READ_CONTACTS" />
Code :
Calling JavaScript Function from Android and Handling Result
In this tutorial I am going to describe JavaScriptInterface for Calling Android Function from JavaScript i.e., JavaScript Binding to Android.
Setting up WebView
First add JavaScriptInterface to webView as follows. Here "MyAndroid" will be used later to call functions in JavaScriptInterface later.
Setting up WebView
First add JavaScriptInterface to webView as follows. Here "MyAndroid" will be used later to call functions in JavaScriptInterface later.
Android JavaScriptInterface tutorial and example for calling JavaScript function from Android
In this tutorial I am going to describe JavaScriptInterface for calling JavaScript function from Android i.e., JavaScript Binding to Android.
I have written a blog post about : Calling JavaScript Function from Android and Handling Result
Setting up WebView
First add JavaScriptInterface to webView as follows. Here "MyAndroid" will be used later to call functions in JavaScriptInterface later.
I have written a blog post about : Calling JavaScript Function from Android and Handling Result
Setting up WebView
First add JavaScriptInterface to webView as follows. Here "MyAndroid" will be used later to call functions in JavaScriptInterface later.
Android WebView WebChromeClient example tutorial
WebChromeClient is used to handle a JavaScript events in Android App which are produced by WebView. The examples of such events are :
- onCloseWindow
- onProgressChanged
- onJsAlert
- onJsConfirm
- onJsPrompt
- onJsTimeout
Android WebView Complete Example Tutorial
The
In this tutorial I am going to demonstrate usage of WebView.
WebView
class allows you to display web pages as a part of your activity layout. WebView becomes helpful when your application frequently displays content from online resources.It simplifies task of performing a network request, parsing the data and rendering it in other Android layout. We can directly make HTTP request to an URL and load the returned HTML into WebView.In this tutorial I am going to demonstrate usage of WebView.
save an Android application's state and restore
The savedInstanceState way for saving state associated with a current instance of an Activity, for example - current navigation, selections, unsaved text.. etc, so that if Android destroys and recreates an Activity, it can come back as it was before.
We should override onSaveInstanceState(Bundle savedInstanceState) and write the application state values you want to change to the Bundle parameter like this:
This stores the values into Bundle in a NVP ("Name-Value Pair") map, and it will get passed in to onCreate and also onRestoreInstanceState.
Extract the values stored:
We should override onSaveInstanceState(Bundle savedInstanceState) and write the application state values you want to change to the Bundle parameter like this:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Save UI state changes to the savedInstanceState.
// This bundle will be passed to onCreate if the process is
// killed and restarted.
savedInstanceState.putBoolean("MyBoolean", true);
savedInstanceState.putDouble("myDouble", 1.9);
savedInstanceState.putInt("MyInt", 1);
savedInstanceState.putString("MyString", "Welcome back to Android");
// etc.
super.onSaveInstanceState(savedInstanceState);
}
This stores the values into Bundle in a NVP ("Name-Value Pair") map, and it will get passed in to onCreate and also onRestoreInstanceState.
Extract the values stored:
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// Restore UI state from the savedInstanceState.
// This bundle has also been passed to onCreate.
boolean myBoolean = savedInstanceState.getBoolean("MyBoolean");
double myDouble = savedInstanceState.getDouble("myDouble");
int myInt = savedInstanceState.getInt("MyInt");
String myString = savedInstanceState.getString("MyString");
}
declare global variable in android- example code
To declare global variable in android, you need to
1) create your own subclass of android.app.Application,
2) and then specify that class in the application tag in your manifest.
Android will automatically create an instance of that class and make it available for your entire application. You can access it from any context using the Context.getApplicationContext() method (Activity also provides a method getApplication() which has the exact same effect):
Full Example :
1) create your own subclass of android.app.Application,
2) and then specify that class in the application tag in your manifest.
Android will automatically create an instance of that class and make it available for your entire application. You can access it from any context using the Context.getApplicationContext() method (Activity also provides a method getApplication() which has the exact same effect):
- Sub Class of Application :
public class MyApp extends Application {
String foo;
}
- In the AndroidManifest.xml add android:name
<application
android:icon="@drawable/icon"
android:label="@string/app_name"
android:name="com.company.MyApp">
</application>
Full Example :
Android hide soft keyboard code
Working code for hiding the soft keyboard in Android :
This can be used to suppress the keyboard until the user actually touched the edittext view.
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
This can be used to suppress the keyboard until the user actually touched the edittext view.
Android Code: Latitude and Longitude of the mobiledevice
We should use the
LocationManager
.LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double longitude = location.getLongitude();
double latitude = location.getLatitude();
The call to
getLastKnownLocation()
doesn't block - which means it will return null
if no position is currently available - so you probably want to have a look at passing a LocationListener
to therequestLocationUpdates()
method instead, which will give you asynchronous updates of your location.private final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
longitude = location.getLongitude();
latitude = location.getLatitude();
}
}
lm.requestLocationUpdates(LocationManager.GPS, 2000, 10, locationListener);
Required Permission :
You'll need to give your application the
ACCESS_FINE_LOCATION
permission if you want to use GPS.<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
You may also want to add the
ACCESS_COARSE_LOCATION
permission for when GPS isn't available and select your location provider with the getBestProvider()
method.My first Android project in Eclipse: Multiplication Table Generator App using TextWatcher and OnClickListener
After removing the configuration errors that came during running the auto generated Hello World project, I decided to write a Multiplication Table Generator App on Android platform. This is my first android app other than HelloWorld. In this article, I am going to explain how I created the App. It describes the use of TextWatcher and OnClickListener interfaces for event handling.
Multiplication Table Generator contains the EditText-ipNumberTxt component for reading user input – a number. It contains two Buttons '+' and '–' to increment/decrement the number in EditText. The generated output is displayed in TextView-outputTXT. The multiplication table is generated on afterTextChanged event of EditText field.
Multiplication Table Generator contains the EditText-ipNumberTxt component for reading user input – a number. It contains two Buttons '+' and '–' to increment/decrement the number in EditText. The generated output is displayed in TextView-outputTXT. The multiplication table is generated on afterTextChanged event of EditText field.
The download link for complete project
is given at end of article.
Error Free Android Hello World Project on Eclipse
Removal of two common errors that may arise when running the android project on eclipse.
[ PANIC: Could not open: C:\Users\gTiwari\.android/avd/MyAndAVD.ini ]
and
[ invalid command-line parameter: Files ]
Today I tried to setup the essentials and test a demo project on Eclipse.I installed required tools (Android SDK, ADT, etc) and created a empty project successfully.
I was following these articles :
Installing Android SDK and ADT in eclipse.
Android First HelloWorld App in Eclipse.
But I got the few errors when I tried run the Hello World project that eclipse created for me.
In this Blog, I am describing the errors and how I solved them that may be useful for Android beginners like you.
[My System Details : Windows 7(64-bit). Eclipse 3.7 (Indigo).The MyFirstEmul is the name of emulator I created.]
Error #1
When i created a hello world project and tried to run it. I got the following error.
[2011-08-27 18:05:22 - Emulator] PANIC: Could not open: C:\Users\gTiwari\.android/avd/MyAndAVD.ini
Cause :
The emulator could not found in location "C:\Users\gTiwari\". I searched over my HDD for the emulator I created earlier. And I found it in the E:\ .android folder. This might be due to I had moved my system folders such as Documents, Desktop, Downloads to E:\.
Solution :
I simply moved the E:\.android folder to C:\Users\gTiwari\ and solved it.
Error #2
After I solved the Error #1, and tried to run the project, I got the following error :
[2011-08-27 18:24:39 - Emulator] invalid command-line parameter: Files.
[2011-08-27 18:24:39 - Emulator] Hint: use '@foo' to launch a virtual device named 'foo'.
[2011-08-27 18:24:39 - Emulator] please use -help for more information
Cause :
The default installation location is: C:\Programme Files(x86)\Android\android-sdk. But the SDK location cannot contain any spaces.
Solution :
Should I reinstall the Android SDK to new location with no space in folder names ?
Well, that may be a solution. But i found easy solution for this.
I make use of mklink command line utility of NTFS in Windows 7 (in previous versions of the command may be different). I pointed C:\AndroidSDK to the actual C:\Program Files (x86)\Android\android-sdk by using following command.
MKLINK /J C:\AndroidSDK "C:\Program Files (x86)\Android\android-sdk\"
This command created special junction folder C:\AndroidSDK helped me in redirection.
And I configured this new path(C:\AndroidSDK) to AndroidSDK in Eclipse IDE settings - from
Windows -> Preferences -> Android
And run the Hello World project successfully.
See my other posts on android from : http://ganeshtiwaridotcomdotnp.blogspot.com/search/label/Android
[ PANIC: Could not open: C:\Users\gTiwari\.android/avd/MyAndAVD.ini ]
and
[ invalid command-line parameter: Files ]
Today I tried to setup the essentials and test a demo project on Eclipse.I installed required tools (Android SDK, ADT, etc) and created a empty project successfully.
I was following these articles :
Installing Android SDK and ADT in eclipse.
Android First HelloWorld App in Eclipse.
But I got the few errors when I tried run the Hello World project that eclipse created for me.
In this Blog, I am describing the errors and how I solved them that may be useful for Android beginners like you.
[My System Details : Windows 7(64-bit). Eclipse 3.7 (Indigo).The MyFirstEmul is the name of emulator I created.]
Error #1
When i created a hello world project and tried to run it. I got the following error.
[2011-08-27 18:05:22 - Emulator] PANIC: Could not open: C:\Users\gTiwari\.android/avd/MyAndAVD.ini
Cause :
The emulator could not found in location "C:\Users\gTiwari\". I searched over my HDD for the emulator I created earlier. And I found it in the E:\ .android folder. This might be due to I had moved my system folders such as Documents, Desktop, Downloads to E:\.
Solution :
I simply moved the E:\.android folder to C:\Users\gTiwari\ and solved it.
Error #2
After I solved the Error #1, and tried to run the project, I got the following error :
[2011-08-27 18:24:39 - Emulator] invalid command-line parameter: Files.
[2011-08-27 18:24:39 - Emulator] Hint: use '@foo' to launch a virtual device named 'foo'.
[2011-08-27 18:24:39 - Emulator] please use -help for more information
Cause :
The default installation location is: C:\Programme Files(x86)\Android\android-sdk. But the SDK location cannot contain any spaces.
Solution :
Should I reinstall the Android SDK to new location with no space in folder names ?
Well, that may be a solution. But i found easy solution for this.
I make use of mklink command line utility of NTFS in Windows 7 (in previous versions of the command may be different). I pointed C:\AndroidSDK to the actual C:\Program Files (x86)\Android\android-sdk by using following command.
MKLINK /J C:\AndroidSDK "C:\Program Files (x86)\Android\android-sdk\"
This command created special junction folder C:\AndroidSDK helped me in redirection.
And I configured this new path(C:\AndroidSDK) to AndroidSDK in Eclipse IDE settings - from
Windows -> Preferences -> Android
And run the Hello World project successfully.
See my other posts on android from : http://ganeshtiwaridotcomdotnp.blogspot.com/search/label/Android
android get current screen orientation
The current configuration ( orientation as well) can be available from the Resources' Configuration object as:
The return parameter may be one of
check http://developer.android.com/reference/android/content/res/Configuration.html#orientation for details
The return parameter may be one of
ORIENTATION_LANDSCAPE
, ORIENTATION_PORTRAIT
, or ORIENTATION_SQUARE
.
public static int getScreenOrientation(){
return getResources().getConfiguration().orientation;
}
check http://developer.android.com/reference/android/content/res/Configuration.html#orientation for details
java android write to sd card
You can access to sd card by File sdCard = Environment.getExternalStorageDirectory();
Write to sd card
And read/write to file by using FileOutputStream f .
Note : Hard coding the /sdcard/ folder is not good.
Write to sd card
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File (sdcard.getAbsolutePath() + "/dir1/dir2");
dir.mkdirs();
File file = new File(dir, "filename");
FileOutputStream f = new FileOutputStream(file);
...
And read/write to file by using FileOutputStream f .
Android : Activity and View Understanding
What are Activity and View in Android:
Dissecting
Dissecting HelloAndroid.java
- Activity
and View
FirstSee this example:
Android: Application Project Structure in Eclipse
Android : AndroidManifest.xml description
What is and usage/purpose of androidmanifest.xml file
Android Application Descriptor File -
Android Application Descriptor File - AndroidManifest.xml
Each Android application has a manifest file named
AndroidManifest.xml
in the project's root directory. It descibes the application components.
Subscribe to:
Posts
(
Atom
)