14

我正在使用 jQuery、JavaScript 和 HTML 开发一个 PhoneGap Android 移动应用程序。我想获得移动IMEI。我已经尝试了本教程中的这段代码。

我得到这样的号码:97734a345d234d。我已检查我的设备以使用*#06#. 我不知道它是否正确。

4

8 回答 8

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();
于 2013-01-25T10:14:32.867 回答
4

您可以编写一个 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);                   
});
于 2013-08-16T16:52:36.733 回答
4

您无法通过 html 或 JavaScript 访问 IMEI。但是您可以编写一个为您读取 IMEI 的应用程序。

只需调用getDeviceId()。不要忘记您需要清单中的READ_PHONE_STATE权限。

于 2012-01-05T12:58:24.293 回答
2

我相信这只有在你利用其他一些应用程序记录 IMEI 时才有可能,我不确定是否有。

假设有些人这样做,理想情况下是系统应用程序,您可以读取日志并解析它们以获取该信息。

祝你好运,回帖成功/失败

于 2012-01-05T13:01:16.183 回答
2

您指向的是PhoneGap Tutorial version 1.0.0。它很旧,而且缺少很多信息。例如,如果您阅读PhoneGap 2.1.0 版的相同页面,您会注意到对device.uuid Quick Example的评论,据说只有在 Tizen 平台的情况下才device.uuid返回 IMEI 号码。您提到的所有其他平台,包括 Android,都会返回其他内容

您无法在纯 HTML / Javascript(通过 PhoneGap Build 编译的应用程序)中获取设备的 IMEI。要阅读它,您必须在本地构建,仅适用于 Android 平台,并包含一些可以为您完成这项工作的本机插件 - 例如像这样的东西。

于 2013-08-03T16:30:52.247 回答
0

您可以通过这种方式更改platforms/android/src/org/apache/cordova/device/Device.java 中定义的getUuid 函数

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;
于 2014-04-13T22:20:58.900 回答
0

您可以使用 Phonegap 中的“设备”对象。由于“设备”已分配给窗口对象,因此它隐含在全局范围内,因此您可以在 onDeviceReady 函数中轻松调用它,例如:

var deviceID = device.uuid

请注意,在 Android 上,它会返回一个随机的 64 位整数作为字符串。该整数是在设备第一次启动时生成的。在 BlackBerry 上,它返回设备的 PIN 码。这是一个九位数的唯一整数作为字符串,在 iPhone 上它返回由多个硬件标识创建的哈希值字符串。它保证对于每个设备都是唯一的,并且不能绑定到用户帐户。

在此处查看完整示例

于 2013-08-04T03:01:03.653 回答
0

我创建了一个名为cordova-plugin-imeigettercordova 的插件(仅适用于 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

于 2017-01-09T14:47:40.473 回答