从已安装的应用程序获取所有Twitter客户

时间:2014-04-08 12:50:47

标签: android android-intent

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

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

它似乎不可行,但必须有一些方法至少可以让我接近我想要的。有人想对此有所了解吗?

1 个答案:

答案 0 :(得分:0)

我不知道是否有某种方法可以获得" twitter客户端" (我们如何定义Twitter客户端?) 您可以在设备上安装的软件包上获取名称列表(您知道的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;
        }
    }
}

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

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

private static final HashMap<String, TwitterClient> mapTwitterClient

这种方法很难处理,所以请巧妙使用。