Android 幾個Info系列類的總結

來源:互聯網
上載者:User

首先我們來看一下PackageItemInfo,它是包含了一些資訊的基類,它的直接子類有:ApplicationInfo、ComponentInfo、InstrumentationInfo、PermissionGroupInfo、PermissionInfo。它的間接子類有:ActivityInfo、ProviderInfo、ServiceInfo。這個類包含的資訊對於所有包中項目是平等的。這些Package items是被Package manager所持有的。這個類提供了屬性的非常普通的基本設定:label、icon和meta-data。這個類的意圖不是被自己調用。它在這隻是簡單地分享被package manager返回的所有items之間的普通定義。比如,它自己並不實現Parcelable介面,但卻協助實現了Parcelable的子類提供了方便的方法。

  ApplicationInfo是從一個特定的應用得到的資訊。這些資訊是從相對應的Androdimanifest.xml的< application>標籤中收集到的。

  ResolveInfo這個類是通過解析一個與IntentFilter相對應的intent得到的資訊。它部分地對應於從AndroidManifest.xml的< intent>標籤收集到的資訊。

  PackageManager這個類是用來返回各種的關聯了當前已裝入裝置了的應用的包的資訊。你可以通過getPacageManager來得到這個類。

  ApplicationInfo與ResolveInfo比較:前者能夠得到Icon、Label、meta-data、description。後者只能得到Icon、Label。

  下面講一下這幾個類綜合在一起的具體應用:

  通過調用PackageManager的方法可以得到兩種不同的資訊:

  首先要得到manager:

  PackageManager manager = getPackageManager();

  方法一:

  List< ApplicationInfo> appList = manager.getInstalledApplications(PackageManager.GET.UNINSTALLED_PAKAGES);

  它是通過解析AndroidManifest.xml的< application>標籤中得到的,所以它能得到所有的app。

  方法二:

  Intent intent = new Intent(Intent.A CTION_MAIN,null);

  intent.addCategory(Intent.CATEGORY_LAUNCHER);

  List< ResolveInfo> appList = manager.queryIntentActivities(intent,0);

  它是通過解析< Intent-filter>標籤得到有

  < action android:name=”android.intent.action.MAIN”/>

  < action android:name=”android.intent.category.LAUNCHER”/>

  這樣的app,所以得到的要比第一種方法少(前者比它多那種service、previder等app)。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.