platform specials

How to build with Android NDK

SDK Version: 
M3
The Android NDK is a companion tool to the Android SDK that lets you build performance-critical portions of your apps in native code. If you write native code, your applications are still packaged into an .apk file and they still run inside of a virtual machine on the device. The fundamental Android application model does not change.
First thing to do:
Go to http://developer.android.com/sdk/ndk/index.html and download Android NDK.
Okay, now you unzip the downloaded NDK zip to your hard disk drive.

If you are a windows user, you also have to have Cygwin, go to http://www.cygwin.com/ and download the latest version.
Install it, and run it, you should see a "linux-like" console.

Removing an app icon from launcher

SDK Version: 
M3


Creating an application that does not appear among the launchable applications with an icon is easy.
Just do not put a launcher activity into AndroidManifest.xml

  1. <intent-filter>
  2.   <action android:name="android.intent.action.MAIN" />
  3.   <category android:name="android.intent.category.LAUNCHER" />
  4. </intent-filter>

Removing an application icon after installation programatically is a bit more tricky.
You can not disable the icon itself, but you can disable one component of an application. So disabling the applications launcher activity will result its icon to be removed from launcher.

The code to do this is simple:

  1. ComponentName componentToDisable =
  2.   new ComponentName("com.helloandroid.apptodisable",
  3.   "com.helloandroid.apptodisable.LauncherActivity");
  4.  
  5. getPackageManager().setComponentEnabledSetting(
  6.   componentToDisable,

Communicating between an activity and the browser - callback

SDK Version: 
M3

A few days ago Gabor made an article about communicating between activites. I'm currently working on a pet project that uses Oauth with the google data api, where I had to get a response from the browser, so let's take a look at communicating between an activity and a browser.

Communicating between running activities

SDK Version: 
M3

Starting a new activity from another and passing some data to it is a simple and basic thing in android. But if you want an already running activity to come to foreground, and pass data to it, it can be a bit tricky.

First of all by default if you call an activity with an intent, a new istance of that activity will be created and displayed, even if another instance is already running. To avoid this the activity must be flagged that, it should not be instantiated multiple times. To achieve this we will set the launchMode of the activity to singleTask in the AndroidManifest.xml

  1. <activity android:name="Activity1" android:launchMode="singleTask" android:label="@string/app_name">

This way when we call this activity using an intent, if there is an existing instance, the system will route the request to it. Hoever the onCreate method, where we usually process the passed extraData, will not run this time.

Reading logs programatically

SDK Version: 
M3

Writing logs into logcat from yuor application is quite easy, reading the logcat programmatically is just a bit more tricky.
Reading logs is usually used for bugreport purposes.

logcat

Remote control your android

SDK Version: 
M3
In this tutorial I'll show you a way to remote control your android device via Wifi, Lan, Internet or Usb.
You'll need 2 applications installed on a rooted device, and another client software installed on your pc or another phone.
First, go to market, and install and open this application:
https://market.android.com/details?id=stericson.busybox&feature=search_result

Then you can install this Vnc Server application:
https://market.android.com/details?id=org.onaips.vnc&feature=search_result

vnc

How to use static variables in activities

SDK Version: 
M3

As previously described in Leaving an Android application, when you exit an app by pressing back button its resources are not completely destroyed immediately.

I would like to explain a concrete mistake I met multiple times, in connection with this behavior, which is easy to commit, if you forget this.

Remove autofocus from an EditText in Android

SDK Version: 
M3

When we create a layout with an EditText or an AutoCompleteTextView, for some reason, it always gains the focus on starting.

focused

How to create context menu

SDK Version: 
M3

There are two main methods that you must implement to get this thing work.
First of all, implement and override the onCreateContextMenu():

  1. @Override
  2.         public void onCreateContextMenu(ContextMenu menu, View v,
  3.                         ContextMenuInfo menuInfo) {
  4.                 super.onCreateContextMenu(menu, v, menuInfo);
  5.                 menu.setHeaderTitle("Choose an option");
  6.                 menu.add(0, v.getId(), 0, "Add to favorites");
  7.                 menu.add(0, v.getId(), 0, "See details");
  8.         }

How to create android applications for tablets?

SDK Version: 
M3

With the new 2.3 SDK, we get the opportunity to develop android for tablets. (At least, with the Galaxy Tab Addon).

When starting a new tablet emulator, first we need to set the "Scale display to real size" option. This helps to set the tablet's size, to our screen size. In my case, it's 1440x900px.

tablet
Syndicate content