在清单中注册应用程序类?


189

我有一个Application类来保持我的应用程序的全局状态。但是我无法在清单文件中注册它?任何想法如何做到这一点?

Answers:


346

如果它是从Application派生的,则android:name在清单中添加完全限定的(名称空间+类名)作为application元素的参数。

<application
        android:name="com.you.yourapp.ApplicationEx"

或者,如果类的包可谓是相对packagemanifest标签,那么就先从.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.you.yourapp">

    <application
        android:name=".ApplicationEx"

2
该文档说“完全限定名称”。我曾经有经验的第三方工具可以从字面上解释它,并且在尝试查找应用程序类(如果相对指定)时不起作用。只是警告。
詹斯·维斯蒂

13

但是如果您已经在使用某些库,例如branch.io的库,那么很可能是您的清单

<application name="">

属性将已经有一些名称,例如

`<application name="io.referral.BranchApp">

在这种情况下,您需要首先扩展您的应用程序类,如下所示:

public class Application extends BranchApp

然后将清单中的应用程序注册为:

android:name="absdevelopers.com.brankreferal.Application"

这对我来说是完美的:)我希望它可以帮助遇到麻烦的人:)


你写这个答案已经有一段时间了,但是如果我想同时添加branch.io和clevertap怎么办。我对如何处理清单中的名称标签感到困惑。请帮帮我。
jitendra purohit

7

如果您使用的是MultiDex应用程序,则已经在使用“ android:name”,因此请扩展android.support.multidex.MultiDexApplication

public class MyApplication extends MultiDexApplication {...}

并将其添加到Android清单中:

android:name="app.package.MyApplication"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.