Anwendungsklasse im Manifest registrieren?

189

Ich habe eine Anwendungsklasse, um den globalen Status meiner Anwendung beizubehalten. Aber ich kann es nicht in der Manifest-Datei registrieren? Irgendeine Idee, wie das geht?

Sharj
quelle

Antworten:

346

Wenn es von Application abgeleitet ist, fügen Sie den vollständig qualifizierten (Namespace + Klassenname) als android:nameParameter des Anwendungselements in Ihrem Manifest hinzu.

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

Oder wenn das Paket der Klasse als relativ zum packageim manifestTag beschriebenen beschrieben werden kann, beginnen Sie einfach mit .:

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

    <application
        android:name=".ApplicationEx"
Reich
quelle
2
Die Dokumentation sagt "voll qualifizierter Name". Ich habe einmal ein Tool eines Drittanbieters erlebt, das dies wörtlich interpretiert und beim Versuch, die Anwendungsklasse zu finden, nicht funktioniert, wenn dies relativ angegeben ist. Nur eine Warnung.
Jens Vesti
13

Falls Sie jedoch bereits eine Bibliothek wie die Bibliothek von branch.io verwenden, ist dies höchstwahrscheinlich Ihr Manifest

<application name="">

Eigenschaft wird bereits einen Namen wie haben

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

In diesem Fall müssen Sie zuerst Ihre Anwendungsklasse wie folgt erweitern:

public class Application extends BranchApp

und registrieren Sie dann Ihre Bewerbung im Manifest als:

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

das funktioniert perfekt für mich :) ich hoffe es hilft jemandem in Schwierigkeiten :)

Bawa
quelle
Es ist schon eine Weile her, dass Sie diese Antwort geschrieben haben, aber was ist, wenn ich branch.io und clevertap gleichzeitig hinzufügen möchte? Ich bin verwirrt, wie man mit Namensschildern im Manifest umgeht. bitte hilf mir.
Jitendra Purohit
7

Wenn Sie eine MultiDex-Anwendung verwenden, wird bereits "android: name" verwendet. Erweitern Sie stattdessen android.support.multidex.MultiDexApplication:

public class MyApplication extends MultiDexApplication {...}

Und fügen Sie es dem Android-Manifest hinzu:

android:name="app.package.MyApplication"
Anos K. Mhazo
quelle