Se podría escribir un plugin PhoneGap para que devuelva el número IMEI. Como el teléfono no devuelve imei para dispositivos Android, devuelve un número aleatorio de 64 bits.
Aquí hay un complemento completo para obtener el número real de IMEI en una aplicación de teléfono (tenga en cuenta que este complemento no es "conectable" pero si sigue las instrucciones funcionará. Lo he probado en phonegap 2.9. Estoy planeando escribiendo un plugin real "plugmanable" con algunos datos del dispositivo para phonegap 3.0).
Aquí es la clase de Java para que se extiende desde 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;
}
}
}
Y entonces usted necesita un objeto js para que pueda acceder a su complemento en el otro lado (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);
Añadir su plugin en res/xml/config.xml dentro de su proyecto como este:
<plugins>
<plugin name="DeviceInfo" value="com.XXX.XXXXX.DeviceInfo"/>
</plugins>
Y agregar el permiso READ_PHONE_STATE dentro de su AndroidManifest.xml:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Después de esto es necesario añadir que deviceinfo.js archivo en su página, y después de la deviceready puede utilizar el plugin de la siguiente manera:
plugins.DeviceInfo.imeiNumber(function(imei){
console.log("imei "+ imei);
});
Para confirmar su IMEI, por lo general es impreso debajo de la batería o en algún lugar escondido (y en la caja en la que se produjo en si eso es disponible). – StackOverflowed
@StackOverflowed Como señaló correctamente, por lo general se imprime ** debajo de ** la batería, por lo que para leerlo, es necesario apagar el dispositivo y quitar la batería. El uso del código rápido '* # 06 #', mencionado por OP es mucho más rápido y fácil. No requiere apagar el dispositivo. – trejder
@StackOverflowed sería muy útil si pudiera proporcionar algún código para eliminar la batería mediante programación y leer el IMEI impreso. –