您可以编写一个 phonegap 插件来返回您的 IMEI 号码。由于 phonegap 不返回 Android 设备的 imei,它返回一个随机的 64 位数字。
这是一个完整的插件,用于在 phonegap 应用程序中获取真实的 IMEI 号码(请注意,这个插件不是“plugmanable”,但如果按照说明操作它将起作用。我已经在 phonegap 2.9 上测试过。我打算写一个真正的“plugmanable”插件,带有一些phonegap 3.0的设备信息)。
这是从 CordovaPlugin (DeviceInfo.java) 扩展的 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;
}
}
}
然后你需要一个 js 对象,这样你就可以在另一端访问你的插件(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 );
在项目中的 res/xml/config.xml 文件中添加插件,如下所示:
<plugins>
<plugin name="DeviceInfo" value="com.XXX.XXXXX.DeviceInfo"/>
</plugins>
并在您的 AndroidManifest.xml 中添加 READ_PHONE_STATE 权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
在此之后您需要将您的 deviceinfo.js 文件添加到您的页面中,并且在 deviceready 之后您可以像这样使用您的插件:
plugins.DeviceInfo.imeiNumber(function(imei){
console.log("imei "+ imei);
});