0.5インベントリファイル

4369 ワード

インベントリファイル
Androidシステムがアプリケーションコンポーネントを起動する前に、システムはアプリケーションのAndroid Manifest.xmlファイル(「リスト」ファイル)を読み取ることによってコンポーネントの存在を確認しなければならない.私たちのアプリケーションはリストファイルにすべてのコンポーネントを宣言しなければならず、リストファイルはアプリケーションプロジェクトディレクトリのルートディレクトリに存在しなければならない.
宣言アプリケーションのコンポーネントに加えて、インベントリ・ファイルには次のような多くの機能があります.
  • は、インターネットアクセスまたはユーザ連絡先に対する読み取りなど、アプリケーションに必要な任意のユーザ権限を決定する
  • .
  • Eclipseを使用する場合、アプリケーションが使用するAPIに基づいて、アプリケーションに必要な最低APIレベルを宣言する(Android Studioを使用し、デフォルトはgradleファイルで宣言する)
  • は、カメラ、Bluetoothサービス、またはマルチタッチスクリーン
  • のようなアプリケーションが使用または必要とするハードウェアおよびソフトウェア機能を宣言する.
  • は、Googleマップライブラリ
  • のように、アプリケーションがリンクする必要があるAPIライブラリ(AndroidフレームワークAPIを除く)を宣言する.
    宣言コンポーネント
    インベントリ・ファイルの主なタスクは、アプリケーション・コンポーネントに関するシステムの情報を通知することです.たとえば、インベントリ・ファイルは、次のようにActivityを宣言できます.
    
    
        
            
            
            ...
        
    
    
    の要素のうち、android:iconの属性は、アプリケーションを識別するアイコンに対応するリソースを指す.の要素のうち、android:nameの属性はActivityサブクラスの全クラス名を指定する、android:labelの属性はActivityのユーザ可視ラベルとして使用する文字列を指定する.
    すべてのアプリケーションコンポーネントを次のように宣言する必要があります.
  • 要素activities
  • を宣言するために使用されます.
  • 要素services
  • を宣言するために使用される
  • 要素broadcast receiver
  • を宣言するために使用される
  • 要素content providers
  • を宣言するために使用される
    ソースコードに書きますが、インベントリファイルに宣言されていないactivities、services、content providersはシステムに表示されないため、実行されません.ただし、broadcast receiverは、インベントリファイルに宣言またはコードに動的に作成(BroadcastReceiverオブジェクトなど)し、registerReceiver()を呼び出してシステムに登録することができます.
    アプリケーションの構築リストファイルの詳細については、AndroidManifest.xmlファイルのドキュメントを参照してください.
    コンポーネント機能の宣言
    前述の起動コンポーネントで説明したように、Intentを使用してactivities,services,broadcast receiversを起動することができる.この操作は、intentにターゲットコンポーネントを明示的に命名する(コンポーネントクラス名を使用する)ことによって実行することができる.または暗黙的にIntentを使用して実行する動作クラスを記述する(実行したい動作を記述するデータを選択することもできる).受信intentは、デバイスに適用するインベントリファイルに宣言された意図フィルタと比較する、その操作を実行できるコンポーネントを見つけて起動する.このintentに記述された操作を実行できるコンポーネントが複数ある場合、ユーザがどのコンポーネントを使用するかを選択する.
    Intentを使用してサービスを起動する場合は、暗黙的な意図を使用しないでください.どのサービスがこのintentに応答するか分からないため、ユーザーもどのサービスが起動したか見えません.Android 5.0(API 21)以降、暗黙的な意図でbindService()メソッドを呼び出すと、異常が放出されます.したがって、サービスを書くときは、私たちのサービスに意図的なフィルタを宣言しないでください.
    アプリケーションのインベントリファイルにactivityを宣言すると、他のアプリケーションからのIntentに応答するためにActivity機能を宣言する意図フィルタとして要素をコンポーネント宣言要素のサブアイテムとして追加することができる.
    たとえば、新しい電子メールを書くためのactivityを含む電子メールアプリケーションを開発した場合、sendのintentsに応答するために、次のように意図的なフィルタを宣言することができます(新しい電子メールを送信します).
       
     ...
        
            
                
                    
                    
                    
                
            
        
    
    

    そして、別のアプリケーションがACTIONを含むSENDアクションのintentをstartActivity()に渡すと、上記で宣言したactivityが起動する可能性があります.
    適用要件の宣言
    Androidシステムに基づくデバイスは多種多様で、すべてのデバイスが同じ特性と機能を提供しているわけではありません.アプリケーションに必要な特性が欠けているデバイスにアプリケーションをインストールすることを防止するためには、デバイスとソフトウェアに対する要求をリストファイルに宣言し、私たちのアプリケーションがサポートするデバイスのタイプを明確に定義する必要があります.その多くの宣言は情報を提供するためだけで、システムはそれらを読み取ることはできません.ただし、Google Playなどの外部サービスでは読み取る、ユーザがデバイスのためにアプリケーションを検索する際にフィルタ機能を提供する.
    たとえば、私たちのアプリケーションがカメラを必要とし、Android 2.1(API 7)に導入されたAPIを使用する場合は、以下のようにリストファイルに要求形式でこれらの情報を宣言する必要があります.
    
    
    
        
    
        
        ...
    
    
    

    現在、カメラがなく、Androidバージョンが2.1未満のデバイスはGoogle Playから私たちのアプリケーションをインストールできません.しかし、私たちのアプリケーションはカメラを使用することを宣言することもできますが、使用する必要はありません.この場合、requiredのプロパティを「false」に設定し、実行時にデバイスがカメラを持っているかどうかを確認し、必要に応じてカメラ機能を停止する必要があります.
    デバイス互換性文書には、アプリケーションと異なるデバイスの互換性をどのように管理するかに関する詳細が記載されている.