アプリケーションクラスをマニフェストに登録しますか?


189

アプリケーションのグローバル状態を維持するためのApplicationクラスが1つあります。しかし、それをマニフェストファイルに登録できませんか?これを行う方法はありますか?

回答:


346

アプリケーションから派生している場合は、完全修飾(名前空間+クラス名)をandroid:nameマニフェストのアプリケーション要素のパラメーターとして追加します。

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

または、クラスのパッケージがタグpackage内でを基準にして記述できる場合は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を同時に追加したい場合はどうすればよいでしょうか。私はマニフェストで名前タグを処理する方法を混乱させています。私を助けてください。
jitendra purohit 2018

7

MultiDexアプリケーションを使用している場合は、すでに「android:name」が使用されているため、代わりにandroid.support.multidex.MultiDexApplication次のように拡張します。

public class MyApplication extends MultiDexApplication {...}

そして、それをAndroidマニフェストに追加します。

android:name="app.package.MyApplication"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.