Android网络服务,包括IMEI,Mac地址的参数

时间:2015-11-02 05:41:25

标签: android android-webservice

我正在开发一个应用程序,它将一些参数发送到服务器,如密钥,请求类型等,我已经在NetworkManager中设置了常用参数,我有所有的连接代码。有一些常见的参数如生成随机TRID,getMac,getImei。 问题是因为我的NetworkManager是一个类,我在这里收到错误:

我在NetworkManger的AsyncTask中有以下代码:

inputParams.put("imei", getIMEINumber());//for adding the param 



 private String getIMEINumber() {
            // TODO Auto-generated method stub
            TelephonyManager telephonymanager = (TelephonyManager)main
                    .getSystemService(Context.TELEPHONY_SERVICE);
            String uid = telephonymanager.getDeviceId();
            // telephonymanager.getSimSerialNumber()
            Log.v("vas", "DeviceId: " + uid);
            return uid;
        }

方法getActivity()未定义类型。

当我将NetworkManager转移到Fragment中时,我遇到了运行时异常。

E/AndroidRuntime(624): Caused by: java.lang.IllegalStateException: System services not available to Activities before onCreate()

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

在你的内部NetworkManager类为imei编号

编写此方法
public static String getIMEInumber(Context context) {
    String identifier = null;
    TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
    if (tm != null)
        identifier = tm.getDeviceId();
    if (identifier == null || identifier.length() == 0)
        identifier = Secure.getString(context.getContentResolver(),
                Secure.ANDROID_ID);

    return identifier;
}

并在您需要的地方调用此方法。这里上下文非常重要..请确保您的上下文不为空..

String imei=NetworkManager.getIMEInumber(context); 

希望它有效..