Зарегистрировать приложение класса в Манифесте?


189

У меня есть один класс Application, чтобы сохранить глобальное состояние моего приложения. Но я не могу зарегистрировать его в файле манифеста? есть идеи как это сделать?

Ответы:


346

Если он получен из Application, добавьте полное имя (namespace + class name) в качестве android:nameпараметра элемента application в своем манифесте.

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

Или, если пакет класса может быть описан относительно тега packagein manifest, то просто начните с .:

<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 одновременно? Я запутался, как бороться с именем тега в манифесте. пожалуйста, помогите мне.
Джитендра Пурохит

7

Если вы используете приложение MultiDex, у вас уже есть «android: name», поэтому вместо этого продлите android.support.multidex.MultiDexApplication:

public class MyApplication extends MultiDexApplication {...}

И добавьте его в манифест Android:

android:name="app.package.MyApplication"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.