0

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

我编辑了代码。

4

2 回答 2

0

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

于 2012-05-30T20:11:45.517 回答
0

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

于 2012-05-30T20:52:25.807 回答