我正在开发一个应用程序,它将一些参数发送到服务器,如密钥,请求类型等,我已经在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()
非常感谢任何帮助。
答案 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);
希望它有效..