[英]How can I find all the packages with a particular intent filter?
我需要獲取名稱為com.mridang
的所有已安裝軟件包的名稱。 為了做到這一點,我在以下代碼片段的行中使用了一些東西:
for (PackageInfo pkgPackage : mgrPackages.getInstalledPackages(0)) {
if (pkgPackage.applicationInfo.packageName.startsWith("com.mridang.")) {
System.out.println(pkgPackage.applicationInfo.packageName);
}
}
我只需要獲取包含以下意圖過濾器com.google.android.apps.dashclock.Extension
的服務的那些軟件包的名稱。
這是示例包中清單文件的片段:
<service
android:name="com.mridang.storage.StorageWidget"
android:icon="@drawable/ic_dashclock"
android:label="@string/extension_name"
android:permission="com.google.android.apps.dashclock.permission.READ_EXTENSION_DATA" >
<intent-filter>
<action android:name="com.google.android.apps.dashclock.Extension" />
</intent-filter>
</service>
我怎樣才能做到這一點?
您可以使用PackageManager#queryIntentServices
Intent intent = new Intent("com.google.android.apps.dashclock.Extension");
for (ResolveInfo info : mgrPackages.queryIntentServices(intent, 0)) {
String packageName = info.serviceInfo.applicationInfo.packageName;
// you can then filter by packageName.startsWith("com.mridang");
Log.d("Packages", "package = " + packageName);
}
希望能有所幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.