How to get IMEI number in PhoneGap? How to get IMEI number in PhoneGap? android android

How to get IMEI number in PhoneGap?


Fetch the IMEI number in the class which extends DroidGap class and save the value of imei number in static member and then access this static field from where ever you want... example code is here

public class MyApp extends DroidGap{    private static String imei;     @Override    public void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        super.loadUrl("file:///android_asset/www/index.html");        TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);        imei=tm.getDeviceId();    }    static public String getIMEI(){        return imei;    }}// where ever u need imei number use this codeString imei=MyApp.getIMEI();


You cannot access the IMEI via html or JavaScript. But you can write an app which reads the IMEI for you.

Just call getDeviceId(). Don't forget that you need the READ_PHONE_STATE permission in your manifest.


You could write a phonegap plugin to return you the IMEI number. As the phonegap doesnt return imei for Android devices, it returns an random 64-bit number.

Here is a complete plugin to get the real IMEI number in a phonegap application (please note that this plugin is not "plugmanable" but if follow the instructions it will work. I have tested on phonegap 2.9. I am planning on writing a real "plugmanable" plugin with a few device information for phonegap 3.0).

Here is the java class for that extends from CordovaPlugin (DeviceInfo.java):

import org.apache.cordova.api.CallbackContext;import org.apache.cordova.api.CordovaPlugin;import org.json.JSONArray;import android.content.Context;import android.telephony.TelephonyManager;import android.util.Log;public class DeviceInfo extends CordovaPlugin {    public DeviceInfo(){    }    public String DeviceImeiNumber(){        TelephonyManager tManager = (TelephonyManager)cordova.getActivity().getSystemService(Context.TELEPHONY_SERVICE);                    return tManager.getDeviceId();    }    @Override    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) {        if (action.equals("imeiNumber")) {            callbackContext.success(this.DeviceImeiNumber());            return true;        }         else {            return false;        }    } }

And then you need a js object so you can access your plugin on the other side (deviceinfo.js):

(function( cordova ) {    function DeviceInfo() {}    DeviceInfo.prototype.imeiNumber = function(win, fail) {        return cordova.exec(                function (args) { if(win !== undefined) { win(args); } },                function (args) { if(fail !== undefined) { fail(args); } },                "DeviceInfo", "imeiNumber", []);    };    if(!window.plugins) {        window.plugins = {};    }    if (!window.plugins.DeviceInfo) {        window.plugins.DeviceInfo = new DeviceInfo();    }})( window.cordova );

Add your plugin on res/xml/config.xml file inside your project like this:

<plugins>    <plugin name="DeviceInfo" value="com.XXX.XXXXX.DeviceInfo"/></plugins>

And add the READ_PHONE_STATE permission inside your AndroidManifest.xml:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

After this you need to add you deviceinfo.js file into your page, and after the deviceready you can use your plugin like this:

plugins.DeviceInfo.imeiNumber(function(imei){   console.log("imei "+ imei);                   });