【问题标题】:How to use an Android custom library?如何使用 Android 自定义库?
【发布时间】:2012-06-05 02:31:33
【问题描述】:

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

我编辑了代码。

【问题讨论】:

  • 你的问题没有多大意义。尝试更好地解释它。
  • 让我试着改写一下,我有一个正在创建的库,我们称之为“lib”。我有一个 Android 项目,我们称之为“P”。 P 正在使用“lib”,我正在尝试获取作为“lib”成员的 MAC 地址。我没有这样做,我得到 null 作为响应。

标签: android sdk jar


【解决方案1】:

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

【讨论】:

  • 有道理:),我会尝试将它移到 onResume 而不是 onCreate 中,看看它是否有效。
  • 我尝试将 wifi 语句移动到 onResume。现在我没有收到错误消息。但是我得到的 MAC 值为 null。
  • 您从String mac = wm.getConnectionInfo().getMacAddress(); 获得价值对吧?
  • 是的,刚刚用一些示例代码完成了我的问题的编辑。
【解决方案2】:

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

【讨论】:

  • 我已经为项目添加了 wifi 权限,但我没有将库的 android 清单编译到 jar 中,因为它与我的项目清单产生了一些冲突(它们都具有相同的名称)。
猜你喜欢
  • 1970-01-01
  • 2022-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-20
  • 2012-09-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多