有没有办法列出安装在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>
...
如果我们可以检测应用程序是否在其清单中包含这些行,我们应该能够列出它们。
答案 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);
}
}
}