【问题标题】:Get all Twitter clients from installed Applications从已安装的应用程序中获取所有 Twitter 客户端
【发布时间】:2014-04-08 12:50:47
【问题描述】:

我想知道列出所有安装在手机中的 Twitter 客户端是否可行。起初,我认为这可以通过将包名称与“Twitter”匹配来完成。但大多数 Android 上的 Twitter 客户端的包名中没有“Twitter”名称。

我们可以获取具有特定权限的应用程序列表,但这对我没有帮助。获取具有某些自定义 Intent 的应用程序可能也无济于事,我仍然需要找到一种方法来获取处理自定义 Intent 的应用程序列表。

这似乎不可行,但必须有某种方法至少可以让我接近我想要的。有人想了解一下吗?

【问题讨论】:

    标签: android android-intent


    【解决方案1】:

    不知道有没有什么方法可以获取“推特客户端”(我们如何定义推特客户端?)。
    您可以获取设备上安装的软件包的名称列表(您知道的 twitter 客户端)。

    final List<PackageInfo> apps = context.getPackageManager().getInstalledPackages(0);
    final String separator = ";";
    final String separatorVersion = "-";
    
    //Log.i("Package list", "num:+"+apps.size());
    for (PackageInfo infoApp : apps) {
        for (TwitterClient tr : mapTwitterClient.values()) {
            if (infoApp.packageName.contains(tr.getPackageName()) ) { //it's a Twitter client this package?
                if (!twitterClients.equals("")) {
                    twittersClients += separator;
                }
                twitterClients += tr.getCommonName()+separatorVersion+infoApp.versionName;
            }
        }
    }
    

    您需要创建只有 2 个属性(packageName 和 commonName)和他的 getter/setter 的类 TwitterClient。

    并用你知道的所有 TwitterClient 填充地图(例如:new TwitterClient("com.twitter.android","Twitter official"));

    private static final HashMap<String, TwitterClient> mapTwitterClient
    

    此方法难度较大,请谨慎使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-23
      • 2011-11-25
      • 2019-09-17
      • 2015-01-14
      • 2021-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多