【问题标题】:PackageManager: List all app that can send notifications [duplicate]PackageManager:列出所有可以发送通知的应用程序[重复]
【发布时间】:2014-04-19 16:17:00
【问题描述】:

我正在考虑在自定义列表视图中显示所有可以发送通知的应用程序(即 Facebook、Twitter、游戏等)。我正在使用 PackageManager 来安装所有应用程序,并且我正在考虑使用意图“过滤器”:

    mContext = context;
    Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
    mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    
    pm = mContext.getPackageManager();
    List<ResolveInfo> appList = pm.queryIntentActivities(mainIntent, 0);

CATEGORY_LAUNCHER 包含许多永远不会发送通知的应用(设置、相机、动态壁纸)。我该如何解决?它的类别是否正确?或者我必须检查所有安装的应用程序权限并仅选择具有“通知权限”的应用程序?如果是,那是什么权限?

【问题讨论】:

  • 没有通知的权限或意图。据我所知,你想要做的事情是不可能的。
  • “发送通知”是什么意思?您的意思是“显示Notification”吗?
  • @CommonsWare 是的,我的意思是显示。
  • @XaverKapeller 恐怕你是对的。因此,我可以向用户提供已安装应用程序的整个列表(如果选中了 ipotetich “扩展列表”选项),并为他提供一组选项,他至少可以限制该列表。例如,选中“仅邮件”选项将强制 CATEGORY_APPS_EMAIL 作为意图。我再次为我的英语感到抱歉:(我尽力了。
  • 这能回答你的问题吗? How to get list of ALL apps (including System Apps)?(因为所有应用都可以发送通知)

标签: android notifications package-managers


【解决方案1】:

您可以使用

读取应用程序使用的权限
getPackageManager().getInstalledPackages(PackageManager.GET_PERMISSIONS);

然后您可以通过检查应用程序是否使用发送通知所需的权限来过滤应用程序

【讨论】:

  • 我已经这么认为了,但似乎没有发送通知的特定权限。
猜你喜欢
  • 1970-01-01
  • 2021-06-17
  • 1970-01-01
  • 1970-01-01
  • 2014-06-04
  • 1970-01-01
  • 2011-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多