Enregistrer la classe Application dans le manifeste?

189

J'ai une classe Application pour conserver l'état global de mon application. Mais je ne parviens pas à l'enregistrer dans le fichier manifeste? Une idée comment faire cela?

Sharj
la source

Réponses:

346

S'il dérive d'Application, ajoutez le pleinement qualifié (espace de noms + nom de classe) comme android:nameparamètre de l'élément d'application dans votre manifeste.

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

Ou si le package de la classe peut être décrit comme relatif au packagedans la manifestbalise, alors commencez simplement par un .:

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

    <application
        android:name=".ApplicationEx"
Riches
la source
2
La documentation dit "nom complet". J'ai une fois expérimenté un outil tiers interprétant cela littéralement, et ne fonctionnant pas en essayant de trouver la classe d'application, si elle est spécifiée relativement. Juste un avertissement.
Jens Vesti
13

mais si vous utilisez déjà une bibliothèque comme la bibliothèque de branch.io, alors probablement votre manifeste

<application name="">

la propriété aura déjà un nom comme

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

dans ce cas, vous devez d'abord étendre votre classe d'application, comme ci-dessous:

public class Application extends BranchApp

puis enregistrez votre application dans le manifeste comme:

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

cela fonctionne parfaitement pour moi :) j'espère que cela aide quelqu'un en difficulté :)

Bawa
la source
ça fait un moment que vous avez écrit cette réponse, mais que faire si je veux ajouter branch.io et clevertap en même temps. Je ne comprends pas comment gérer le tag de nom dans le manifeste. Sil te plait aide moi.
jitendra purohit
7

Si vous utilisez une application MultiDex, vous aurez déjà utilisé "android: name", alors étendez android.support.multidex.MultiDexApplication:

public class MyApplication extends MultiDexApplication {...}

Et ajoutez-le au manifeste Android:

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