我正在尝试为将成为jar文件的Android项目创建SDK。
我遇到的问题是该库具有返回设备MAC地址的功能。为此,我必须使用:
WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
此命令要求我的sdk类将继承Activity类并实现onCreate
函数。
当我尝试从另一个引用该库的Android项目中使用库(jar)时,我收到错误消息:
system service not available to activities before oncreate
即使我的命令很难在onCreate函数中。
有没有人知道如何解决它?或者我是否需要以不同的方式实现SDK,以便我能够使用某些Android服务/功能?
我为库和项目添加了一个示例代码:
库(编译成jar文件):
public class DeviceDetails
{
public String MACAddress="";
public String IMEI="";
public DeviceDetails(Context context)
{
WifiManager wm = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
MACAddress=wm.getConnectionInfo().getMacAddress();
TelephonyManager telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
IMEI=telephonyManager.getDeviceId();
}
}
使用该库的项目
public class TestSDKActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DeviceDetails d=new DeviceDetails(getApplicationContext());
String i=d.IMEI;
String m=d.MACAddress;
}
}
*问题已解决 * *
我无法获得mac地址或imei的原因是为了使用wifi服务或电话服务我必须从使用jar文件的类传递上下文对象。
我编辑了代码。
答案 0 :(得分:0)
如果你在onCreate
函数中调用它,那么它还没有完成加载。因此,您无法调用系统服务。
答案 1 :(得分:0)
不要忘记在清单中添加WIFI权限。这也可能是你的null的原因。