我想知道列出安装到手机中的所有Twitter客户端是否可行。起初,我认为这可以通过将包名称与" Twitter"进行匹配来完成。但Android上的大多数Twitter客户都没有Twitter'名字包名。
我们可以获取具有特定权限的应用程序列表,但这并不能帮助我。使用某些自定义意图获取应用程序可能也没有帮助,我仍然需要找到一种方法来获取处理自定义Intent的应用程序列表。
它似乎不可行,但必须有一些方法至少可以让我接近我想要的。有人想对此有所了解吗?
答案 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
这种方法很难处理,所以请巧妙使用。