@Override public void didFail(SKRequest request, NSError error) { Log.err("AppStoreReceipt request failed!"); listener.onFail(); } });
private static Activity findLaunchActivity() { try { Class<?> activityThreadClass = Class.forName("android.app.ActivityThread"); Object activityThread = activityThreadClass.getMethod("currentActivityThread").invoke(null); Field activitiesField = activityThreadClass.getDeclaredField("mActivities"); activitiesField.setAccessible(true); Object activities = activitiesField.get(activityThread); Collection<?> values = (Collection<?>) activities.getClass().getDeclaredMethod("values") .invoke(activities); for (Object activityRecord : values) { Class<?> activityRecordClass = activityRecord.getClass(); Field pausedField = activityRecordClass.getDeclaredField("paused"); pausedField.setAccessible(true); if (!pausedField.getBoolean(activityRecord)) { Field activityField = activityRecordClass.getDeclaredField("activity"); activityField.setAccessible(true); Activity activity = (Activity) activityField.get(activityRecord); if (activity.getIntent().getCategories().contains("android.intent.category.LAUNCHER")) { return activity; } } } } catch (Exception e) { Log.err("Couldn't find launch activity! " + "Specify manually with AndroidConfig.setLaunchActivity(activity); to make RoboPods work correctly!"); } return null; }
private static Activity findLaunchActivity() { try { Class<?> activityThreadClass = Class.forName("android.app.ActivityThread"); Object activityThread = activityThreadClass.getMethod("currentActivityThread").invoke(null); Field activitiesField = activityThreadClass.getDeclaredField("mActivities"); activitiesField.setAccessible(true); Object activities = activitiesField.get(activityThread); Collection<?> values = (Collection<?>) activities.getClass().getDeclaredMethod("values") .invoke(activities); for (Object activityRecord : values) { Class<?> activityRecordClass = activityRecord.getClass(); Field pausedField = activityRecordClass.getDeclaredField("paused"); pausedField.setAccessible(true); if (!pausedField.getBoolean(activityRecord)) { Field activityField = activityRecordClass.getDeclaredField("activity"); activityField.setAccessible(true); Activity activity = (Activity) activityField.get(activityRecord); if (activity.getIntent().getCategories().contains("android.intent.category.LAUNCHER")) { return activity; } } } } catch (Exception e) { Log.err("Couldn't find launch activity! " + "Specify manually with AndroidConfig.setLaunchActivity(activity); to make RoboPods work correctly!"); } return null; }
@Override public void flush() { try (NSAutoreleasePool ignored = new NSAutoreleasePool()) { if (!preferences.write(path, false)) { Log.err("IOSSettings", "Failed to write settings to file: " + path); } } }
@Override public void finish() { iabHelper.consumeAsync(purchase, (purchase, result) -> { if (!result.isSuccess()) { Log.err("Failed to finish transaction: " + getTransactionIdentifier()); } }); }
@Override public void requestProductData() { if (productsRequest != null) { BillingError error = new BillingError(ErrorType.ALREADY_REQUESTING_PRODUCTS, "Already requesting product data!"); for (BillingObserver observer : billingObservers) { observer.onProductsRequestError(error); } return; } List<Product> products = productCatalog.getProducts(); Set<String> productIds = new HashSet<>(); for (Product product : products) { String id = product.getIdentifier(getType()); if (id != null) { productIds.add(id); } else { Log.err("Product identifier not found for product: " + product); } } productsRequest = new SKProductsRequest(productIds); productsRequest.setDelegate(new ProductsRequestDelegate()); productsRequest.start(); }
Log.err("Product identifier not found for product: " + product);