【发布时间】:2015-01-25 21:18:13
【问题描述】:
Twitter 到处都是关于希望收集用户 iOS 和 Android 上安装的所有应用程序列表的新闻。
最近有没有我不知道的 API 允许他们这样做?还是他们正在扫描已注册的应用 url 方案?
【问题讨论】:
-
适用于 iOS,iOS 8 不支持,iOS 7 及更早版本支持
Twitter 到处都是关于希望收集用户 iOS 和 Android 上安装的所有应用程序列表的新闻。
最近有没有我不知道的 API 允许他们这样做?还是他们正在扫描已注册的应用 url 方案?
【问题讨论】:
一段代码将为您带来 Android 上安装的所有活动/应用程序的列表:
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
final List pkgAppsList = context.getPackageManager().queryIntentActivities( mainIntent, 0);
有关更多信息,请查看: How to get a list of installed android applications and pick one to run
【讨论】:
如果你想获取 android 中已安装应用的列表,你可以使用这个:
/**
* Returns a list of installed apps
*/
public static ArrayList<PackageInformation> getInstalledApps(
Context contxt, boolean getSysPackages) {
ArrayList<PackageInformation> pacakgeInformationList = new ArrayList<PackageInformation>();
List<PackageInfo> packs = contxt.getPackageManager()
.getInstalledPackages(0);
for (int i = 0; i < packs.size(); i++) {
PackageInfo packageInfo = packs.get(i);
if ((!getSysPackages)) {
continue;
}
PackageInformation newInfo = new PackageInformation();
newInfo.setAppName(packageInfo.applicationInfo.loadLabel(
contxt.getPackageManager()).toString());
newInfo.setPacakgeName(packageInfo.packageName);
newInfo.setVersionName(packageInfo.versionName);
newInfo.setVersionCode(packageInfo.versionCode);
newInfo.setIcon(packageInfo.applicationInfo.loadIcon(contxt
.getPackageManager()));
pacakgeInformationList.add(newInfo);
}
return pacakgeInformationList;
}
然后,您只需要访问互联网的权限,然后轻松地将您想要的信息发送到您想要的服务器。
所以 unfotunatley 是的,可以在 android 中做到这一点。
对于 ios,请参阅此帖子: Get list of all installed apps
他们说没有越狱的 iPhone 就无法做到这一点。
【讨论】: