列出c2dm / GCM注册的应用程序

时间:2012-07-17 09:41:54

标签: java android broadcastreceiver android-c2dm google-cloud-messaging

有没有办法列出安装在Android手机上的所有应用程序,以了解它们是否已注册到GCM / C2DM帐户,并且会收到数据?

我实际上在手机上收到了一些广告,我想知道应用程序是否在向我发送垃圾邮件。 我自己制作了一些C2DM应用程序,我知道我在清单中添加了这些行:

<receiver android:name=".NotificationsReceiver" android:permission="com.google.android.c2dm.permission.SEND">
                 <intent-filter>
                      <action android:name="com.google.android.c2dm.intent.RECEIVE"></action>
                      <action android:name="com.google.android.c2dm.intent.REGISTRATION"></action>
    ...

如果我们可以检测应用程序是否在其清单中包含这些行,我们应该能够列出它们。

1 个答案:

答案 0 :(得分:4)

    PackageManager pm = context.getPackageManager();
    List<PackageInfo> packages = pm.getInstalledPackages(PackageManager.GET_PERMISSIONS);
    for (PackageInfo pi : packages)
    {
        for (String usesPermission : pi.requestedPermissions){
            if (usesPermission.equalsIgnoreCase("com.google.android.c2dm.permission.RECEIVE")){
                Log.d(TAG, "app with permission to receive push: "+pi.applicationInfo.name);
            }
        }
    }
相关问题