AndroidManifest.xml詳細2

39899 ワード

八、第三層属性

<activity-alias android:enabled = ["true" | "false" ]
                android:exported = ["true" | "false" ]
                android:icon = "drawable resource"
                android:label = "string resource"
                android:name = "string"
                android:permission = "string"
                android:targetActivity = "string" >
<intent-filter/>  
<meta-data/>
</activity-alias>

<activity-alias>是为activity创建快捷方式的,如下实例:

<activity android:name=".shortcut">
            <intent-filter>
                <action android:name = "android.intent.action.MAIN" />
            </intent-filter>
</activity>
  <activity-alias android:name = ".CreateShortcuts" android:targetActivity = ".shortcut" android:label = "@string/shortcut" >
    <intent-filter>
              <action android:name = "android.intent.action.CREATE_SHORTCUT" />
              <category android:name = "android.intent.category.DEFAULT" />
      </intent-filter>
  </activity-alias>

其中android.targetActivity是指向对应快捷方式的activity,如上述的shortcut(此Activity名)
android:label是指快捷方式的名称,而快捷方式的图标默认是给定的application图标
九、第三层<service>

<service android:enabled=["true" | "false"]
         android:exported[="true" | "false"]
         android:icon="drawable resource"
          android:label = "string resource"
          android:name = "string"
          android:permission = "string"
          android:process = "string" >
</service>

关于service的更多内容请阅读《Service简介 》和 AIDL和Service实现两进程通信》
十、第三层<receiver>
receiver的属性与service一样,这里就不显示了关于receiver的更多内容请阅读《 BroadcastReceiver》
和《BroadcastReceiver的生命周期》
十一、第三层<provider>属性

<provider android:authorities="list"
          android:enabled=["true" | "false"]
          android:exported = ["true" | "false" ]
          android:grantUriPermissions = ["true" | "false" ]
          android:icon = "drawable resource"
          android:initOrder = "integer"
          android:label = "string resource"
          android:multiprocess = ["true" | "false" ]
          android:name = "string"
          android:permission = "string"
          android:process = "string"
          android:readPermission = "string"
          android:syncable = ["true" | "false" ]
          android:writePermission = "string" >
            <grant-uri-permission/>
            <meta-data/>
</provider>

【1】android:authorities:
标识这个ContentProvider,调用者可以根据这个标识来找到它
【2】android:grantUriPermission:
对某个URI授予的权限
【3】android:initOrder
十二、第三层<uses-library>

<uses-library android:name = "string"
              android:required=["true" | "false"] />

用户库,可自定义。所有android的包都可以引用。
更多内容请参考 http://developer.android.com/guide/topics/manifest/uses-library-element.html
十三、第一层<supports-screens>

<supports-screens  android:smallScreens=["true" | "false"

                  android:normalScreens = ["true" | "false"
                  android:largeScreens = ["true" | "false"
                  android:anyDensity = ["true" | "false" ] />

这是在android1.6以后的新特性,支持多屏幕机制
各属性含义:这四个属性,是否支持大屏,是否支持中屏,是否支持小屏,是否支持多种不同密度
十三、第二层<uses-configuration />与<uses-feature>性能都差不多

<uses-configuration   android:reqFiveWayNav = ["true" | "false"
                    android:reqHardKeyboard = ["true" | "false" ]
                    android:reqKeyboardType = ["undefined" | "nokeys" | "qwerty" |   "twelvekey" ]
                    android:reqNavigation = ["undefined" | "nonav" | "dpad" |   "trackball" | "wheel" ]
                    android:reqTouchScreen = ["undefined" | "notouch" | "stylus" | "finger" ] />


<uses-feature android:glEsVersion = "integer"
              android:name = "string"
              android:required = ["true" | "false" ] />

这两者都是在描述应用所需要的硬件和软件特性,以便防止应用在没有这些特性的设备上安装。
关于此的详细内容请参考 
http://developer.android.com/guide/google/play/filters.html
十四、第二层<uses-sdk />

<uses-sdk android:minSdkVersion="integer"

          android:targetSdkVersion = "integer"
          android:maxSdkVersion = "integer" />

描述应用所需的api level,就是版本,目前是android 2.2 = 8,android2.1 = 7,android1.6 = 4,android1.5=3
在此属性中可以指定支持的最小版本,目标版本以及最大版本
十五、第二层<instrumentation />

<instrumentation android:functionalTest = ["true" | "false" ]
                  android:handleProfiling = ["true" | "false" ]
                  android:icon = "drawable resource"
                  android:label = "string resource"
                  android:name = "string"
                  android:targetPackage = "string" />

アプリケーションのパフォーマンスを検出および分析するためのクラスを定義し、プログラムを監視できます.各アプリケーションのコンポーネントの前にinstrumentationクラスがインスタンス化されます
android:functionalTest(説明:instrumentationクラスが機能テストを実行できるかどうか、デフォルトはfalse)
十六、区別~
 
コンポーネント(Activity,Serivice,ContentProver)またはデータにアクセスするには、manifestファイルでを使用して権限の取得を宣言する必要があります.この点に注意

<アプリケーション>と同級
コンポーネント.
セキュリティのために、コンポーネント(Activity,Serivice,ContentProver)で他のアプリケーションにアクセスするにはいくつかのpermissionが必要だと宣言できます.これにより、他のアプリケーションがこれらのコンポーネントにアクセスするには、manifestファイルでを使用してこれらの権限を宣言する必要があります.
例:

Activityでは、Activityを起動するには、次のようなカスタム権限が必要だと宣言できます.

<application . . . >
        <activity android:name = "XXX" . . . >
                  android:permission="com.teleca.project.MY_SECURITY"> </activity>
  </application>

他のアプリケーションで「XXX」という名前のActivityを起動する必要がある場合は、を使用して権限を取得する必要があることを宣言する必要があります.
com.teleca.project.MY_SECURITY
は、permissionsのセットを表すラベルを宣言し、はpermissionsのセットにnamespaceを宣言します.