Чтобы получить список установленных приложений, поддерживающих в приложении биллинг, вы можете проверить их разрешения:
final List<PackageInfo> inAppBillingEnabledPackages = new ArrayList<PackageInfo>();
final PackageManager pm = getPackageManager();
final List<PackageInfo> installedAppInfo = pm.getInstalledPackages(PackageManager.GET_PERMISSIONS);
for (final PackageInfo packageInfo : installedAppInfo) {
if (packageInfo.requestedPermissions != null) {
for (final String permissionInfo : packageInfo.requestedPermissions) {
if ("com.android.vending.BILLING".equals(permissionInfo)) {
inAppBillingEnabledPackages.add(packageInfo);
}
}
}
}
// inAppBillingEnabledPackages now contains a list of packages supporting in-app billing
Это прекрасно работает с некорневым телефоном.
Что касается «купленных приложений», вы имеете в виду, какие установленные приложения были оплачены и не являются бесплатными? Если это так, для приложений, загруженных из Play, так как я не думаю, что приложение Play поддерживает любой такой Intent, я думаю, что единственным способом было бы получить цену приложения (которое будет зависеть от страны!) От API, как те, которые перечислены в this SO thread, например, here - пример того, как получить информацию о ценах в данном регионе, используя android-market-api.