Android库项目 - 如何获取上下文?

时间:2012-02-07 11:47:16

标签: android

我很高兴地将同一应用程序的不同版本(付费/免费)中的代码重构为Android库项目,以便实际的应用程序可以简单地自定义库并减​​少代码重复。

我开始怀疑的一件事是库代码中的getApplicationContext()是什么意思?与儿童应用程序相同的ApplicationContext是一样的吗?当我从库项目的SharedPreferences而不是原始应用的getApplicationContext()访问getApplicationContext()时会发生什么? SharedPreferences文件是相同还是不同?

如果我使用该活动访问SharedPreferences该怎么办?活动现在是图书馆活动而不是原始应用程序是否重要? SharedPreferences是否相同?

感谢您澄清。

2 个答案:

答案 0 :(得分:13)

当打包APK时,所有类都将属于主应用程序。

调用getApplicationContext()。getPackageName(),它将返回应用程序的包名,而不是库的包。

对于免费/付费应用程序,我有相同的设置,当我将课程移动到图书馆项目时没有问题。

但是,您必须检查xml文件(清单,小部件等)以使用库项目的完整包名。

答案 1 :(得分:1)

库项目几乎就像在一个项​​目中拥有所有代码一样。有一些与命名空间相关的事情需要注意,但通常效果很好。

e.g。您的库有自己的命名空间

图书馆包名= uk.co.lib 主应用程序包名称= uk.co.app

您希望从主应用程序访问tro的库中的活动必须添加到应用程序清单中。库项目中名为A的活动将添加到主应用程序中的清单中,如下所示:

<activity android:name="uk.co.lib.A">

访问共享首选项等会从任一名称空间中获得相同的结果,并会返回该应用程序的首选项。

只有一个应用程序,因此只有一个ApplicationContext