簡體   English   中英

如何找到帶有特定意圖過濾器的所有軟件包?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM