如何使用Android自定义库?

时间:2012-05-30 19:57:30

标签: android sdk jar

我正在尝试为将成为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文件的类传递上下文对象。

我编辑了代码。

2 个答案:

答案 0 :(得分:0)

如果你在onCreate函数中调用它,那么它还没有完成加载。因此,您无法调用系统服务。

答案 1 :(得分:0)

不要忘记在清单中添加WIFI权限。这也可能是你的null的原因。