1. 程式人生 > >AndroidManifest.xml裏加入不同package的component (Activity、Service裏android:name裏指定的值一般為句號加類名),可以通過指定完全類名(包名+類名)來解決

AndroidManifest.xml裏加入不同package的component (Activity、Service裏android:name裏指定的值一般為句號加類名),可以通過指定完全類名(包名+類名)來解決

代碼 gui 目的 tools 註冊 不同 res 收藏 small

我們都知道對於多個Activity如果在同一個包中,在Mainfest中可以這樣註冊

Xml代碼 技術分享
  1. <span style="font-size: small;"><?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.trinea.sns.activity"
  4. android:versionCode="1"
  5. android:versionName="1.0">
  6. <uses-sdk android:minSdkVersion="3" />
  7. <uses-permission android:name="android.permission.INTERNET" />
  8. <application android:icon="@drawable/icon" android:label="@string/app_name">
  9. <activity android:name=".UpdateStatusActivity"
  10. android:label="@string/app_name">
  11. <intent-filter>
  12. <action android:name="android.intent.action.MAIN" />
  13. <category android:name="android.intent.category.LAUNCHER" />
  14. </intent-filter>
  15. </activity>
  16. <activity android:name=".ViewSnsActivity"
  17. android:label="@string/app_name">
  18. </activity>
  19. </application>
  20. </manifest></span>

上面的UpdateStatusActivity和ViewSnsActivity同樣在包com.trinea.sns.activity下面可以如此定義,但如果

UpdateStatusActivity在包com.trinea.sns.activity下,而ViewSnsActivity在包com.trinea.sns.activity2下面怎麽辦呢

每一個Activity、Service等應用程序組件都會對應AndroidManifest.xml文件中的一個<activity>、<service>標簽。在這些標簽中有一個必選的屬性:android:name,該屬性需要指定一個類名,像上面的.UpdateStatusActivity和android.intent.action.MAIN。大家發現這兩個有什麽不同了嗎,對了。第一個是.的方式而第二個是全路徑的方式。指定android:name屬性值有3種方式,如下:

1. 指定完全的類名(packagename+classname),例如,net.blogjava.mobile.Main。

2. 只指定類名,例如,.Main,其中Main前面的“.”是可選的。該類所在的包名需要在<manifest>標簽的package屬性中指定。

3. 指定相對類名,這種方式類似於第2種方式,只是在<activity>標簽的android:name屬性中不光指定類名,還有部分包名。例如,如果Main類在net.blogjava.mobile.abcd包中,就可以在<manifest>標簽的package屬性中指定net.blogjava.mobile,然後在<activity>標簽的android:name屬性中指定.abcd.Main

由此可見,package的目的是為了更方便地指定android:name以及其他相關屬性的值,就是一個默認的包。如果不在android:name中指定包名,會自動將package屬性值加在前面

參考:http://developer.android.com/guide/topics/manifest/activity-element.html#nm

AndroidManifest.xml裏加入不同package的component (Activity、Service裏android:name裏指定的值一般為句號加類名),可以通過指定完全類名(包名+類名)來解決