2

有没有办法列出安装在Android手机上的所有应用程序,以便知道他们是否注册到GCM/C2DM帐户并将接收数据?列表c2dm/GCM注册的应用程序

我实际上收到了一些广告在我的手机上,我想知道那个应用程序是垃圾邮件给我的。 我做了几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> 
    ... 

如果我们可以检测应用程序是否在其清单这些线索,我们应该能够列出。

+0

我想也可以在运行时注册一个意图,在这种情况下,它不会出现在清单中。 – 2013-07-19 09:08:16

回答

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); 
      } 
     } 
    }