Использование библиотек, требующих взаимодействия с AppCompatActivity в плагине Godot для AndroidAndroid

Форум для тех, кто программирует под Android
Anonymous
Использование библиотек, требующих взаимодействия с AppCompatActivity в плагине Godot для Android

Сообщение Anonymous »

Я хочу использовать библиотеку cafebazaarpoolaki для реализации Cafe Bazaar в биллинге приложений в экспортированных играх Godot для Android. однако из моего непонимания класс GodotPlugin унаследован от FragmentActivity(), который не поддерживает функции AppCompatActivity(), которые требуются пулаки. и у меня не может быть экземпляра AppCompatActivity() внутри моего плагина (это вызывает НЕУСТРАНИМУЮ ошибку и сбой). может ли кто-нибудь помочь мне с ситуацией?
кстати, я не разработчик Android :)
это мой класс Bazar:
package org.godotengine.plugin.android.template

import android.app.Activity
import android.os.Bundle
import android.os.PersistableBundle
import android.util.Log
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import ir.cafebazaar.poolakey.Connection
import ir.cafebazaar.poolakey.Payment
import ir.cafebazaar.poolakey.config.PaymentConfiguration
import ir.cafebazaar.poolakey.config.SecurityCheck
import ir.cafebazaar.poolakey.request.PurchaseRequest

class Bazar() : AppCompatActivity() {

private val paymentConfiguration = PaymentConfiguration(
localSecurityCheck = SecurityCheck.Enable(rsaPublicKey = "KEY")
)

private val payment by lazy(LazyThreadSafetyMode.NONE) {
Payment(context = this, config = paymentConfiguration)
}

private lateinit var paymentConnection: Connection

// override fun onCreate(savedInstanceState: Bundle?) {
// super.onCreate(savedInstanceState)
// connect()
// }
fun connect() {
paymentConnection = payment.connect {
connectionSucceed {
// Toast.makeText(activity, "Connected", Toast.LENGTH_LONG).show()
Log.i("godot", "connection succeed!")
}
connectionFailed {
// Toast.makeText(activity, "Connection failed", Toast.LENGTH_LONG).show()
Log.i("godot", "connection failed!")
}
disconnected {
// Toast.makeText(activity, "Disconnected", Toast.LENGTH_LONG).show()
Log.i("godot", "disconnected")
}
}
}

private val purchaseRequest = PurchaseRequest(
productId = "PRODUCT_ID",
payload = "PAYLOAD"
)

fun startPayment() {
Log.i("godot", "payment started")
payment.purchaseProduct(registry = activityResultRegistry, request = purchaseRequest) {
purchaseFlowBegan {
// Toast.makeText(activity, "Purchase flow began", Toast.LENGTH_LONG).show()
Log.i("godot", "purchase flow began")

}
failedToBeginFlow { throwable ->
// Toast.makeText(
// activity,
// "Failed to begin purchase flow: ${throwable.message}",
// Toast.LENGTH_LONG
// ).show()
Log.e("godot", "startPayment: ${throwable.message}")
}
purchaseSucceed { purchaseEntity ->
// Toast.makeText(
// activity,
// "Purchase succeeded: ${purchaseEntity.purchaseToken}",
// Toast.LENGTH_LONG
// ).show()
Log.i("godot", "purchase succeeded")

}
purchaseCanceled {
// Toast.makeText(activity, "Purchase canceled", Toast.LENGTH_LONG).show()
}
purchaseFailed { throwable ->
// Toast.makeText(activity, "Purchase failed: ${throwable.message}", Toast.LENGTH_LONG)
// .show()
Log.e("godot", "startPayment(purchaseFailed): ${throwable.message}")

}
}
}
}

а это мой класс плагина:

package org.godotengine.plugin.android.template

import android.util.Log
import android.widget.Toast
import androidx.activity.result.ActivityResultRegistryOwner
import org.godotengine.godot.Godot
import org.godotengine.godot.plugin.GodotPlugin
import org.godotengine.godot.plugin.UsedByGodot

class GodotAndroidPlugin(godot: Godot) : GodotPlugin(godot){
private val context = godot.getAndroidContext()

private var bazar: Bazar? = null

override fun getPluginName() = BuildConfig.GODOT_PLUGIN_NAME

@UsedByGodot
fun initiatePayment() {
runOnUiThread {
bazar = Bazar().apply { connect() }
}
}

@UsedByGodot
fun helloWorld() {
runOnUiThread {
Toast.makeText(activity, "Hello World", Toast.LENGTH_LONG).show()
Log.v(pluginName, "Hello World")
}
}

override fun onMainDestroy() {
// bazar?.disconnectPayment()
super.onMainDestroy()
}
}


Подробнее здесь: https://stackoverflow.com/questions/786 ... dot-androi

Вернуться в «Android»