Как получить номер IMEI в PhoneGap?
Я разрабатываю мобильное приложение Android PhoneGap с помощью jQuery, JavaScript и HTML. Я хочу получить мобильный IMEI. Я пробовал этот код из этого Tutorial.
Я получаю номер следующим образом: 97734a345d234d.
Я проверил свое устройство, чтобы получить номер IMEI, используя *#06#
.
Я не знаю, правильно это или нет.
Ответы
Ответ 1
Извлеките номер IMEI в классе, который расширяет класс DroidGap и сохранит значение номера imei в статическом члене, а затем получите доступ к этому статическому полю из того места, где вы хотите... пример кода здесь
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 code
String imei=MyApp.getIMEI();
Ответ 2
Вы не можете получить доступ к IMEI через html или JavaScript. Но вы можете написать приложение, которое читает IMEI для вас.
Просто позвоните getDeviceId(). Не забывайте, что вам нужно разрешение READ_PHONE_STATE в вашем манифесте.
Ответ 3
Вы можете написать плагин phonegap, чтобы вернуть вам номер IMEI. Поскольку телефонная игра не возвращает imei для устройств Android, она возвращает случайное 64-битное число.
Вот полный плагин, чтобы получить реальный номер IMEI в приложении для телефонных разговоров (обратите внимание, что этот плагин не является "плавным", но если следовать инструкциям, он будет работать. Я протестировал по телефонной таблице 2.9. Я планирую писать настоящий плагиновский плагин с несколькими сведениями об устройстве для телефонной карты 3.0).
Вот класс java, который распространяется от 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;
}
}
}
И тогда вам нужен объект 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>
И добавьте разрешение READ_PHONE_STATE в свой AndroidManifest.xml:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
После этого вам нужно добавить файл deviceinfo.js на свою страницу, а после deviceready вы можете использовать свой плагин следующим образом:
plugins.DeviceInfo.imeiNumber(function(imei){
console.log("imei "+ imei);
});
Ответ 4
Я считаю, что это было бы возможно только в том случае, если вы используете некоторые другие приложения, регистрирующие IMEI, и я не уверен, что если это произойдет.
Предполагая, что некоторые из них, в идеале - системное приложение, вы можете читать журналы и анализировать их для этой информации.
Удачи, верните назад с успехами/неудачами
Ответ 5
Вы указываете на PhoneGap Tutorial версии 1.0.0. Он очень старый, и он много информации. Если вы, например, прочитали ту же страницу для версии 2.1.0 PhoneGap, вы заметите комментарий, сделанный для device.uuid Quick Example, где сказано, что device.uuid
возвращает номер IMEI только в случае платформы Tizen. Все другие платформы, в том числе Android, вы упомянули, вернули что-то еще.
Вы не можете получить устройство IMEI в чистом HTML/Javascript (приложение, скомпилированное с помощью сборки PhoneGap). Чтобы прочитать его, вы должны создавать локально, только для платформы Android, и включать в себя некоторый собственный плагин, который будет выполнять эту работу для вас - например, что-то вроде this one.
Ответ 6
Вы можете использовать объект "Устройство" из Phonegap. Поскольку "устройство" назначается объекту window, оно неявно находится в глобальной области видимости, поэтому вы можете легко вызвать его в своей функции onDeviceReady, например:
var deviceID = device.uuid
Обратите внимание, что на Android он возвращает случайное 64-битное целое число в виде строки. Целое число генерируется при первой загрузке устройства. На BlackBerry он возвращает PIN-код устройства. Это девятизначное уникальное целое число в виде строки, а на iPhone оно возвращает строку хэш-значений, созданных с помощью нескольких аппаратных идентификаторов. Это гарантировано для каждого устройства и не может быть привязано к учетной записи пользователя.
Смотрите полный пример здесь
Ответ 7
Вы можете изменить функцию getUuid, определенную в платформах /android/src/org/apache/cordova/device/Device.java таким образом
public String getUuid() {
//String uuid = Settings.Secure.getString(this.cordova.getActivity().getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
TelephonyManager tManager = (TelephonyManager)this.cordova.getActivity().getSystemService(Context.TELEPHONY_SERVICE);
String uuid = tManager.getDeviceId();
return uuid;
}
просто прокомментируйте первую строку и добавьте два новых.
Вам также нужно добавить
import android.content.Context;
import android.telephony.TelephonyManager;
Ответ 8
Я создал плагин под названием cordova-plugin-imeigetter
для cordova (только для Android-устройств), который делает то, что вы хотите. Надеюсь, это поможет вам.
Установка:
cordova plugin add https://github.com/tomloprod/cordova-plugin-imeigetter.git
Применение:
Этот плагин экспортирует объект с помощью одного метода get
:
window.plugins.imeiGetter.get(function(imei){
console.log(imei);
});
GitHub: https://github.com/tomloprod/cordova-plugin-imeigetter