2012-04-17 51 views

回答

0

[编辑后OP的评论]:您可以使用Android的PackageManaer http://developer.android.com/reference/android/content/pm/PackageManager.html 获得有关Android的理解清单文件的内容的信息。

+0

我想检查标记,看看活动是否在清单中注册。 – Smitha 2012-04-17 08:27:41

+0

什么是“注册”活动?您想知道活动是否会对意图做出回应? – 2012-04-17 08:29:09

+0

是的..我想知道一个活动是否已在providset中声明或在使用意图启动它之前,这里告诉:http://stackoverflow.com/questions/10186272/any-way-to-check-if-an -activity-in-android-is-registered-in-manifest-file – Smitha 2012-04-17 08:35:40

4

如前所述,您可以使用PackageManager来实现此目的。有几种方法可以返回一个或多个PackageInfo对象,这些对象又包含公共字段ActivityInfo[] activities,前提是您也指示它...阅读下面。

说明文档中提到了以下几点:

所有标签的数组下收录,或者如果 有没有空。只有在标志GET_ACTIVITIES为 的情况下才会填充此值。

因此,请确保您在请求信息时提供该特定标志;例如使用getPackageInfo(...)时,做到:

getPackageInfo("your.package.name", PackageManager.GET_ACTIVITIES) 

如果您需要获取更多信息,您可以 '或' 多个标志一起:

getPackageInfo("your.package.name", PackageManager.GET_ACTIVITIES | PackageManager.GET_RECEIVERS) 

编辑:

或者你也可以使用getActivityInfo(android.content.ComponentName, int)并捕获NameNotFoundException,如果找不到请求的Activity,将抛出NameNotFoundException,但通常这被认为是“滥用”异常。

不管怎样,都取决于你。