2012-01-05 48 views
14

我正在開發一個使用jQuery,JavaScript和HTML的PhoneGap Android移動應用程序。我想獲得移動IMEI。我試過這個Tutorial這個代碼。如何獲取PhoneGap中的IMEI號碼?

我得到這樣的數字:97734a345d234d。 我已使用*#06#檢查了我的設備以獲取IMEI號碼。 我不知道它是否正確。

+0

要確認您的IMEI,它通常是在電池下方印刷或隱藏的地方(和包裝盒上的它進來,如果這是可用的)。 – StackOverflowed 2012-04-11 20:47:33

+0

@StackOverflowed正如你正確指出的那樣,它通常是在**電池下打印**,所以要讀取它,需要關閉設備並取出電池。使用'*#06#'快速代碼,由OP提出的方式,方式更快,更容易。不需要關閉設備的電源。 – trejder 2013-08-03 16:32:34

+0

@StackOverflowed可以提供一些代碼以編程方式刪除電池並讀取已打印的IMEI,這將非常有用。 – 2014-10-04 21:10:39

回答

4

您無法通過html或JavaScript訪問IMEI。但是你可以寫一個應用程序爲你讀取IMEI。

只需致電getDeviceId()。不要忘記,您需要清單中的READ_PHONE_STATE權限。

+0

我試過這個getDeviceId()但是我的網絡狀態爲錯誤1 =引用錯誤:找不到變量getDeviceId – Mercy 2012-01-05 13:19:34

+0

@Priya鏈接函數'getDeviceId()'返回一個字符串。你寫了一個Android應用程序?還要注意這一點:'你不直接實例化這個類。相反,你通過Context.getSystemService(Context.TELEPHONY_SERVICE)獲取對實例的引用.' – rekire 2012-01-05 13:22:55

2

我相信這隻有在您利用其他一些應用程序登錄IMEI時纔有可能,我不確定是否有這樣做。

假設有些人,理想情況下是系統應用程序,您可以讀取日誌並解析它們以獲取該信息。

運氣好,回來後與成功/失敗

+0

'getDeviceId()'也是一個很好的選擇,如果它能與phonegap一起工作 – TryTryAgain 2012-01-05 13:02:49

+0

我試過這個getDeviceId()。得到錯誤作爲網絡狀態1 =參考錯誤:找不到變量getDeviceId – Mercy 2012-01-05 13:18:24

+0

然後我認爲你唯一的選擇是以某種方式實現它,我在上面的答案中描述了它。 – TryTryAgain 2012-01-05 13:19:54

5

取在延伸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(); 
+0

**輝煌**例子!皮蒂,我只能給你+1。謝謝! – trejder 2013-08-03 16:33:54

+0

如何在我的JavaScript代碼中訪問MyApp? – bschandramohan 2014-05-31 11:17:36

+0

@bschandramohan你需要創建一個插件,通過JS調用一些本地代碼(PhoneGap),請參閱此鏈接:http://www.tricedesigns.com/2012/03/01/pushing-data-to-a-phonegap- web-view/ – 2017-01-26 16:54:18

2

您指向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之類的插件。

0

您可以使用Phonegap中的「設備」對象。由於「設備」被分配到窗口對象,它是隱含在全球範圍內,因此您可以輕鬆地調用它在你的onDeviceReady的功能,例如:

var deviceID = device.uuid 

請注意,在Android上它返回一個隨機64-位整數作爲一個字符串。整數在設備的第一次啓動時生成。在BlackBerry上,它返回設備的PIN碼。這是一個九位獨特的整數作爲字符串,並在iPhone上返回一個由多個硬件標識創建的哈希值字符串。它保證對每個設備都是唯一的,不能綁定到用戶帳戶。

查看完整的例子here

4

你可以寫一個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);     
}); 
+0

完美地工作,謝謝! – Udo 2014-02-19 01:11:37

+0

@UDcreate,我很樂意提供幫助! – lao 2014-02-20 20:30:59

0

你可以改變在平臺/ 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; 
0

我創建了一個用於科爾多瓦(僅適用於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

相關問題