Zarejestruj klasę aplikacji w Manifeście?

189

Mam jedną klasę aplikacji, aby zachować globalny stan mojej aplikacji. Ale nie mogę zarejestrować go w pliku manifestu? Masz pomysł, jak to zrobić?

Sharj
źródło

Odpowiedzi:

346

Jeśli pochodzi z aplikacji, dodaj android:namew swoim manifeście pełną nazwę (przestrzeń nazw + nazwa klasy) jako parametr elementu aplikacji.

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

Lub jeśli pakiet klasy można opisać jako względny packagew manifestznaczniku, zacznij od .:

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

    <application
        android:name=".ApplicationEx"
Bogaty
źródło
2
Dokumentacja zawiera „w pełni kwalifikowana nazwa”. Pewnego razu doświadczyłem narzędzia innej firmy, które interpretuje to dosłownie i nie działa, gdy próbuję znaleźć klasę aplikacji, jeśli jest określona względnie. Tylko ostrzeżenie.
Jens Vesti
13

ale jeśli używasz już biblioteki, takiej jak biblioteka branch.io, najprawdopodobniej twój manifest

<application name="">

właściwość będzie już miała nazwę jak

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

w takim przypadku musisz najpierw rozszerzyć klasę aplikacji, jak poniżej:

public class Application extends BranchApp

a następnie zarejestruj swoją aplikację jako manifest:

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

to działa idealnie dla mnie :) mam nadzieję, że pomoże komuś w tarapatach :)

Bawa
źródło
minęło trochę czasu, kiedy napisałeś tę odpowiedź, ale co jeśli chcę dodać branch.io i clevertap w tym samym czasie. Jestem zdezorientowany, jak postępować ze znacznikiem nazwy w manifeście. proszę pomóż mi.
jitendra purohit
7

Jeśli korzystasz z aplikacji MultiDex, będziesz już w użyciu „android: nazwa”, więc zamiast tego rozszerz android.support.multidex.MultiDexApplication:

public class MyApplication extends MultiDexApplication {...}

I dodaj go do manifestu Androida:

android:name="app.package.MyApplication"
Anos K. Mhazo
źródło