Пример #1
0
void callback_start(callback *c) {
	c->attached = false;
	JNIEnv *env = getJavaEnv();
	if (env != NULL) {
		c->env = env;
		c->attached = true;
	}
}
Пример #2
0
    void InAppPurchaseWrapper::initializeProduct(const std::string &url, const std::vector<std::string> &productIdentifiers) const
    {
		ANativeActivity *activity = __state->activity;
		JNIEnv *env = getJavaEnv();
		jclass nativeActivityClass = env->GetObjectClass(activity->clazz);
		GP_ASSERT(nativeActivityClass != NULL);

		jmethodID mid_startInAppSetup = env->GetMethodID(nativeActivityClass, "startInAppSetup", "()V");
		GP_ASSERT(mid_startInAppSetup);
		env->CallVoidMethod(activity->clazz, mid_startInAppSetup);
    }
Пример #3
0
    void InAppPurchaseWrapper::buyProduct(const InAppPurchaseItem &product) const
    {
		ANativeActivity *activity = __state->activity;
		JNIEnv *env = getJavaEnv();
		jclass nativeActivityClass = env->GetObjectClass(activity->clazz);
		GP_ASSERT(nativeActivityClass != NULL);

		jmethodID mid_buyProduct = env->GetMethodID(nativeActivityClass, "buyProduct", "(Ljava/lang/String;)V");
		GP_ASSERT(mid_buyProduct);
		jstring js_productIdentifier = env->NewStringUTF(product.productIdentifier.c_str());
		env->CallVoidMethod(activity->clazz, mid_buyProduct, js_productIdentifier);
    }
Пример #4
0
    bool InAppPurchaseWrapper::canMakePayments(void) const
    {
		ANativeActivity *activity = __state->activity;
		JNIEnv *env = getJavaEnv();
		jclass nativeActivityClass = env->GetObjectClass(activity->clazz);
		GP_ASSERT(nativeActivityClass != NULL);

		jmethodID mid_canMakePayments = env->GetMethodID(nativeActivityClass, "canMakePayments", "()Z");
		GP_ASSERT(mid_canMakePayments);
		jboolean canMakePayments = env->CallBooleanMethod(activity->clazz, mid_canMakePayments);
        return canMakePayments;
    }
Пример #5
0
void toggle_java_ref(gpointer data, GObject *object, gboolean is_last_ref) {
	jobject ref = g_object_get_data(object, JAVA_REF);
	JNIEnv *env = getJavaEnv();
	if (is_last_ref) {
		jobject weak_ref = (*env)->NewWeakGlobalRef(env, ref);
		g_object_set_data(object, JAVA_REF, weak_ref);
		(*env)->DeleteGlobalRef(env, ref);
		g_debug("ref toggled to weak: %ld", (long)object);
	}
	else {
		jobject strong_ref = (*env)->NewGlobalRef(env, ref);
		g_object_set_data(object, JAVA_REF, strong_ref);
		(*env)->DeleteWeakGlobalRef(env, ref);
		g_debug("ref toggled back to strong: %ld", (long)object);
	}
}
Пример #6
0
    void InAppPurchaseWrapper::restoreTransactions(void) const
    {
		ANativeActivity *activity = __state->activity;
		JNIEnv *env = getJavaEnv();
		jclass nativeActivityClass = env->GetObjectClass(activity->clazz);
		GP_ASSERT(nativeActivityClass != NULL);
	
		jmethodID mid_getExtraAreasPurchased = env->GetMethodID(nativeActivityClass, "getExtraAreasPurchased", "()Ljava/util/ArrayList;");
		jobject arrayList = env->CallObjectMethod(activity->clazz, mid_getExtraAreasPurchased);

		jclass arrayClass = env->FindClass("java/util/ArrayList");
		GP_ASSERT(arrayClass);
		jmethodID mid_size = env->GetMethodID(arrayClass, "size", "()I");
		GP_ASSERT(mid_size);
		jmethodID mid_get = env->GetMethodID(arrayClass, "get", "(I)Ljava/lang/Object;");
		GP_ASSERT(mid_get);

		jboolean isCopy;
		jint size = env->CallIntMethod(arrayList, mid_size);
		std::vector<std::string> local_skuList;
		// then we copy the(se) SKU(s) to be processed by checkRestorePurchase
		for (int i = 0; i < size; ++i) {

			const jstring js_sku = static_cast<const jstring>(env->CallObjectMethod(arrayList, mid_get, i));
			const char *nativeSKUName = env->GetStringUTFChars(js_sku, &isCopy);
			local_skuList.push_back(nativeSKUName);
			env->ReleaseStringUTFChars(js_sku, nativeSKUName);
		}

		gameplay::InAppPurchaseWrapper &the_inAppPurchaseWrapper = gameplay::InAppPurchaseWrapper::GetUniqueInstance();
		for (std::vector<gameplay::InAppPurchaseCallback *>::const_iterator cit = the_inAppPurchaseWrapper.getCallbacks().begin(); cit != the_inAppPurchaseWrapper.getCallbacks().end(); ++cit) {
			(*cit)->checkRestorePurchase(local_skuList);
		}

		jmethodID mid_restorePurchasedSKU = env->GetMethodID(nativeActivityClass, "restorePurchasedSKU", "(Ljava/lang/String;)V");
		GP_ASSERT(mid_restorePurchasedSKU);
		
		for (std::vector<std::string>::const_iterator cit = local_skuList.begin(); cit != local_skuList.end(); ++cit) {
			const jstring js_sku = env->NewStringUTF(cit->c_str());
			env->CallVoidMethod(activity->clazz, mid_restorePurchasedSKU, js_sku);
		}
    }
Пример #7
0
    std::string InAppPurchaseWrapper::getPathForContent(const std::string &productIdentifier) const
    {
		ANativeActivity *activity = __state->activity;
		JNIEnv *env = getJavaEnv();
		jclass nativeActivityClass = env->GetObjectClass(activity->clazz);
		GP_ASSERT(nativeActivityClass);

		jmethodID mid_getExternalFilesDir = env->GetMethodID(nativeActivityClass, "getExternalFilesDir", "(Ljava/lang/String;)Ljava/io/File;");
		GP_ASSERT(mid_getFilesDir);
		jobject fileObject = env->CallObjectMethod(activity->clazz, mid_getExternalFilesDir, NULL);
		GP_ASSERT(fileObject);
		jclass fileClass = env->GetObjectClass(fileObject);
		GP_ASSERT(fileClass);
		jmethodID mid_getAbsolutePath= env->GetMethodID(fileClass, "getAbsolutePath", "()Ljava/lang/String;");
		GP_ASSERT(mid_getAbsolutePath);
		jstring path4Content = static_cast<jstring>(env->CallObjectMethod(fileObject, mid_getAbsolutePath));

		jboolean isCopy;
		const char *nativePath = env->GetStringUTFChars(path4Content, &isCopy);
		const std::string result = nativePath + std::string("/" + productIdentifier + "/");
		env->ReleaseStringUTFChars(path4Content, nativePath);
		
        return result;
    }