0

В настоящее время я работаю над приложением, в котором перечислены все приобретенные приложения (например, «Покупные приложения» в Google Play Store). Есть ли решение получить список приложений, содержащийся в биллинге приложений? Как узнать, было ли приобретенное приложение или нет? Для этого нужен корневой телефон?Получить список приобретенных приложений Android

Спасибо.

ответ

1

Чтобы получить список установленных приложений, поддерживающих в приложении биллинг, вы можете проверить их разрешения:

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.

0

Скорее всего, это невозможно. Вы все еще можете попробовать использовать стандарт call to query all products с пустым списком продуктов. Он работает для приложений, владеющих этими продуктами. Я никогда не пробовал, работает ли он для любого приложения, но вы можете попробовать.

// must be initialized first 
IInAppBillingService service; 

// query products 
Bundle skusBundle = new Bundle(); 
skusBundle.putStringArrayList("ITEM_ID_LIST", new ArrayList<String>()); 
Bundle response = service.getSkuDetails(3, "<package name>", "inapp", skusBundle); 
Смежные вопросы