我正在開發一個使用jQuery,JavaScript和HTML的PhoneGap Android移動應用程序。我想獲得移動IMEI。我試過這個Tutorial這個代碼。如何獲取PhoneGap中的IMEI號碼?
我得到這樣的數字:97734a345d234d。 我已使用*#06#
檢查了我的設備以獲取IMEI號碼。 我不知道它是否正確。
我正在開發一個使用jQuery,JavaScript和HTML的PhoneGap Android移動應用程序。我想獲得移動IMEI。我試過這個Tutorial這個代碼。如何獲取PhoneGap中的IMEI號碼?
我得到這樣的數字:97734a345d234d。 我已使用*#06#
檢查了我的設備以獲取IMEI號碼。 我不知道它是否正確。
您無法通過html或JavaScript訪問IMEI。但是你可以寫一個應用程序爲你讀取IMEI。
只需致電getDeviceId()。不要忘記,您需要清單中的READ_PHONE_STATE權限。
我相信這隻有在您利用其他一些應用程序登錄IMEI時纔有可能,我不確定是否有這樣做。
假設有些人,理想情況下是系統應用程序,您可以讀取日誌並解析它們以獲取該信息。
運氣好,回來後與成功/失敗
'getDeviceId()'也是一個很好的選擇,如果它能與phonegap一起工作 – TryTryAgain 2012-01-05 13:02:49
我試過這個getDeviceId()。得到錯誤作爲網絡狀態1 =參考錯誤:找不到變量getDeviceId – Mercy 2012-01-05 13:18:24
然後我認爲你唯一的選擇是以某種方式實現它,我在上面的答案中描述了它。 – TryTryAgain 2012-01-05 13:19:54
取在延伸DroidGap類的類的IMEI號,並保存在靜態成員的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();
**輝煌**例子!皮蒂,我只能給你+1。謝謝! – trejder 2013-08-03 16:33:54
如何在我的JavaScript代碼中訪問MyApp? – bschandramohan 2014-05-31 11:17:36
@bschandramohan你需要創建一個插件,通過JS調用一些本地代碼(PhoneGap),請參閱此鏈接:http://www.tricedesigns.com/2012/03/01/pushing-data-to-a-phonegap- web-view/ – 2017-01-26 16:54:18
您指向PhoneGap Tutorial version 1.0.0。這是非常古老的,它提供了大量的信息。例如,如果您閱讀version 2.1.0 of PhoneGap的相同頁面,則會注意到針對device.uuid Quick Example發表的評論,其中device.uuid
僅在Tizen平臺的情況下才返回IMEI號碼。您提到的所有其他平臺(包括Android)確實會返回別的東西。
您無法在純HTML/Javascript(通過PhoneGap Build編譯的應用程序)中獲取設備的IMEI。要閱讀它,您必須在本地構建,僅適用於Android平臺,幷包含一些可爲您完成這項工作的本地插件 - 例如this one之類的插件。
您可以使用Phonegap中的「設備」對象。由於「設備」被分配到窗口對象,它是隱含在全球範圍內,因此您可以輕鬆地調用它在你的onDeviceReady的功能,例如:
var deviceID = device.uuid
請注意,在Android上它返回一個隨機64-位整數作爲一個字符串。整數在設備的第一次啓動時生成。在BlackBerry上,它返回設備的PIN碼。這是一個九位獨特的整數作爲字符串,並在iPhone上返回一個由多個硬件標識創建的哈希值字符串。它保證對每個設備都是唯一的,不能綁定到用戶帳戶。
查看完整的例子here
你可以寫一個PhoneGap的插件來回報你的IMEI號碼。由於phonegap不會爲Android設備返回imei,它會返回一個隨機的64位數字。
這是一個完整的插件,可以在phonegap應用程序中獲得真實的IMEI號碼(請注意,這個插件不是「可插入的」,但如果按照指示它將工作。編寫一個真正的「plugmanable」插件,其中包含一些用於phonegap 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);
});
你可以改變在平臺/ Android的定義getUuid功能/ SRC /組織/阿帕奇/科爾多瓦/設備/ 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;
我創建了一個用於科爾多瓦(僅適用於Android設備)稱爲cordova-plugin-imeigetter
插件,你想要什麼,做。我希望它能幫助你。
安裝:
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
要確認您的IMEI,它通常是在電池下方印刷或隱藏的地方(和包裝盒上的它進來,如果這是可用的)。 – StackOverflowed 2012-04-11 20:47:33
@StackOverflowed正如你正確指出的那樣,它通常是在**電池下打印**,所以要讀取它,需要關閉設備並取出電池。使用'*#06#'快速代碼,由OP提出的方式,方式更快,更容易。不需要關閉設備的電源。 – trejder 2013-08-03 16:32:34
@StackOverflowed可以提供一些代碼以編程方式刪除電池並讀取已打印的IMEI,這將非常有用。 – 2014-10-04 21:10:39