Android - 检查在运行时是否在Manifest中声明了Activity

时间:2013-08-26 20:18:44

标签: android android-activity android-manifest

我正在开发一个可以集成到其他人的APK中的第三方库。我在我的库中添加了一个新的Activity;但是,我想看看集成我的库的人是否在他们的AndroidManifest.xml中声明了我的新Activity(可能他们意外忘记了)。

我的印象是在RunTime期间无法读取或编辑AndroidManifest。

另请注意,我无法保证在我的代码中获得Activity的实例。只有全局的应用程序上下文。

我不做什么是尝试startActivity并捕获ActivityNotFoundException。例如:

Context ctx = someView.getContext(); // <--- this is a global application context, not necessarily an instance of Activity
Intent intent = new Intent(ctx, UnsureActivity.class);
try {
    ctx.startActivity(intent); 
} catch (ActivityNotFoundException anfe) {
    System.out.println("UnsureActivity wasn't declared in manifest");
}

因为如果活动是在Manifest中声明的,那么上面的代码实际上会运行(这会抢夺开发人员的活动)。

注意:我需要在运行时知道,因为在实际尝试运行活动之前,我必须提前提醒服务器。

有人有想法吗?

0 个答案:

没有答案