有没有办法列出 Android 手机上安装的所有应用程序,以便了解它们是否注册到 GCM/C2DM 帐户,以及是否会接收数据?
我的手机上实际上收到了一些广告,我想知道哪个应用程序向我发送了垃圾邮件。 我自己制作了一些 C2DM 应用程序,并且我知道我在 list 中添加了这些行:
<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>
...
如果我们能够检测应用程序的 list 中是否包含这些行,我们应该能够列出它们。
最佳答案
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);
}
}
}
关于java - 列出 c2dm/GCM 注册应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11519886/