android - 是否可以在 Android 库项目中获取应用程序的上下文?

标签 android android-context android-library

我想在我的库项目的一个类中获取在运行时引用/托管我的库的应用程序的上下文。可能吗?如果是,怎么做?

谢谢

更新 我不希望我的用户将参数中的上下文传递给我的库项目,因为我的库项目可能会通过 JNI 调用,而我不知道如何在 JNI 中获取上下文并将其传递给 Java 层。

最佳答案

还有一种方法,在你的库项目中添加应用类:

/**
 * Base class for those who need to maintain global application state.
 */
public class LibApp extends Application {

  /** Instance of the current application. */
  private static LibApp instance;

  /**
   * Constructor.
   */
  public LibApp() {
    instance = this;
  }

  /**
   * Gets the application context.
   * 
   * @return the application context
   */
  public static Context getContext() {
    return instance;
  }

}

然后在你的常规项目中让真正的应用程序类扩展 LibApp:

/**
 * Base class for those who need to maintain global application state.
 */
public class App extends LibApp {

  @Override
  public void onCreate() {
    super.onCreate();
  }

}

确保您在 AndroidManifest 中定义了“名称”:

<application android:name="App" ...>

并且您的 App 类在基础包中。

然后您可以使用 LibApp.getContext() 您的库项目来获取正在使用该库的应用程序的应用程序上下文。

这可能不是一个好的解决方案,但它对我有用。 我分享它是因为它可能对其他人有用。

关于android - 是否可以在 Android 库项目中获取应用程序的上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7157501/

相关文章:

android - 使用 FFmpeg 编码时处理原始数据的正确方法

android - 在 Android 中链接 Realm 查询的最佳实践是什么?

android - 自定义适配器的上下文参数 - getApplicationContext() 失败但 'this' 有效

java - 从非 Activity 类获取资源

android - 从 Android 库中引用 .so 文件

Android Studio Gradle 项目刷新失败 :Configuration with name 'default' not found

java - 在 fragment 布局android中获取 fragment

Android Studio 卡在加载设备上

服务中的 Android 计时器

android - 获取错误 android.content.Context 无法解析为变量?