Bạn có thể viết một plugin PhoneGap để trả lại cho bạn số IMEI. Khi phonegap không trả về imei cho các thiết bị Android, nó trả về một số 64 bit ngẫu nhiên.Dưới đây là một plugin hoàn chỉnh để có được số IMEI thực trong một ứng dụng phonegap (xin lưu ý rằng plugin này không phải là "plugmanable" nhưng nếu làm theo hướng dẫn nó sẽ hoạt động. Tôi đã thử nghiệm trên phonegap 2.9. viết một plugin "plugmanable" thực sự với một vài thông tin thiết bị cho phonegap 3.0).
Đây là lớp java cho rằng kéo dài từ 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;
}
}
}
Và sau đó bạn cần một đối tượng js để bạn có thể truy cập vào plugin của bạn ở phía bên kia (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);
Thêm plugin của bạn trên res/xml/file config.xml trong dự án của bạn như thế này:
<plugins>
<plugin name="DeviceInfo" value="com.XXX.XXXXX.DeviceInfo"/>
</plugins>
Và thêm sự cho phép READ_PHONE_STATE bên trong AndroidManifest.xml của bạn:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Sau này bạn cần phải thêm bạn deviceinfo.js nộp vào trang của bạn, và sau khi deviceready bạn có thể sử dụng plugin của bạn như thế này:
plugins.DeviceInfo.imeiNumber(function(imei){
console.log("imei "+ imei);
});
Để xác nhận IMEI của bạn, nó thường được in dưới pin hoặc ở một nơi ẩn (và trên hộp nó bước vào nếu đó là có sẵn). – StackOverflowed
@StackOverflowed Như bạn đã chỉ ra một cách chính xác, nó thường được in ** dưới ** pin, do đó, để đọc nó, nó là cần thiết để tắt thiết bị và tháo pin. Sử dụng '* # 06 #' mã nhanh, được đo bằng OP là cách, cách nhanh hơn và dễ dàng hơn. Không yêu cầu tắt nguồn thiết bị. – trejder
@StackOverflowed sẽ cực kỳ hữu ích nếu bạn có thể cung cấp một số mã để loại bỏ lập trình pin và đọc IMEI được in. –