0

我目前正在開發一款應用,列出所有購買的應用(如Google Play商店中的「購買的​​應用」)。 是否有解決方案來獲取應用程序結算中包含的應用程序列表? 我們如何知道應用程序是否已被購買? 是否需要這款手機?獲取已購買應用的列表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); 
相關問題