我目前正在開發一款應用,列出所有購買的應用(如Google Play商店中的「購買的應用」)。 是否有解決方案來獲取應用程序結算中包含的應用程序列表? 我們如何知道應用程序是否已被購買? 是否需要這款手機?獲取已購買應用的列表Android
謝謝。
我目前正在開發一款應用,列出所有購買的應用(如Google Play商店中的「購買的應用」)。 是否有解決方案來獲取應用程序結算中包含的應用程序列表? 我們如何知道應用程序是否已被購買? 是否需要這款手機?獲取已購買應用的列表Android
謝謝。
爲了讓安裝的應用程序支持應用內結算的清單,你可以檢查他們的權限:
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獲得給定語言環境中的價格信息的示例。
很可能這是不可能的。你仍然可以嘗試使用帶有空白產品列表的標準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);