How to set the correct Android *.apk MIME Type for Apache Webserver

Android application uses *.apk file as its installation package. It is a variant of the Java JAR file format (which in turn a Zip 2.0 file). Usually the *.apk file is obtained from Android Marketplace, the official channel for getting Android application. However there are some vendors or carriers that allow *.apk file to be downloaded from 3rd-party websites.

Those who elect to upload the *.apk files on their own webserver can add the official Android APK MIME Type to their Apache Web server config file:

Option 1: edit mime.types (for those who have root access)
1. First edit the mime.types file – sudo nano /etc/apache2/mime.types
2. Then add this at the end of the file – application/vnd.android.package-archive
3. Reload the server configuration – “sudo service apache2 reload”
Option 2: edit .htaccess file (for shared server or user who do not have root access)
1. Edit .htaccess
2. Add this line – AddType application/vnd.android.package-archive

This will register the appropriate MIME type for the *.apk file so that both the server and mobile application can handle.

Ubuntu One Files client for Android phones

Ubuntu One Files for Android is an application written by Micha? Karnicki as part of Google Summer of Code Project (GSoC) 2010. The client is licensed under the GNU Affero GPL v3 and its source code is available from Launchpad.

Google Android Ubuntu One files

The application lets you synchronize your phone contacts, files and photo gallery on the cloud automatically. Ubuntu One files also offers convenient feature to change the visibility of your files, making it easier for you to share files with the rest of the world.

Ubuntu One Files is also available on the Android Market, free of charge.

Note: Ubuntu One is a service similar to Box.net that enables you to store your files on the cloud. You do not need to be an Ubuntu user to use Ubuntu One. Each registered user are given 2GB space for free.

How to make JavaME .jar files downloadable from Apache Web Server

Mobile application developers may have realize that one of the best (and recommended) way to distribute their JavaME/J2ME application is by hosting it on a website. This makes it easier for potential users to navigate and download the .jad or .jar files from their phone browsers and to execute it directly.

However, some web servers are not configured to handle .jar / .jad file requests, eventually leading to failed install response received by the mobile users.

To remedy this, .jad / .jar files need to be associated with the correct MIME type. In Apache, you can do this by creating ‘.htaccess’ file in your web directory, and inserting these lines :

# JavaME
AddType text/vnd.sun.j2me.app-descriptor .jad
AddType application/java-archive .jar

Afterwards, safe the file. The web server should behave accordingly when requests are made to either of these files. For other web servers, please refer to their respective manual or online-help on how to change document MIME type.

DateDiff – A simple JavaME mobile app to calculate the day differences between two dates

There are times where I am required to calculate the day/month/year differences between two dates, which I found a little bit troublesome to do repeatedly even if it is just a simple estimate. So in turn, I created this mobile app to do the job, which greatly increase my productivity! Here i’m releasing the source code to DateDiff, which is coded and compatible with all JavaME phone:

DateDiff mypapit

DateDiff.jar – binary (MIDP 2.0)
datediff_src.zip (source code)

DateDiff is copyrighted by me, and is licensed under a BSD-like license, you can read the terms of use from the ‘About’ menu or from the source code.

Mozilla Fennec 1.9.2 builds for Android

Mozilla Fennec, a Gecko-based mobile browser from Mozilla is now available for Android, where you can download the latest build from the trunk from : Mozilla-Central trunk Android/.

Be careful as the code can be considered still in the alpha-stage, where memory leaks are bound to happen alongside with occasional buggy browsing experience.

It requires Android 2.0 and was only tested on Motorola Droid and Nexus One. The application must also be installed on the device’s internal memory (not on SD card).