Check if the SDK is loaded in MainActivity#onCreate
Checks getSandboxedSdks to see if the SDK is loaded
during onCreate, rather than storing the state in a
local variable which will be reset when the activity
is recreated.
Test: Manual
Bug: 323011435
Change-Id: I277e08c106d3fd228097ec539d027e1356a9a0d4
diff --git a/privacysandbox/ui/integration-tests/testapp/src/main/java/androidx/privacysandbox/ui/integration/testapp/MainActivity.kt b/privacysandbox/ui/integration-tests/testapp/src/main/java/androidx/privacysandbox/ui/integration/testapp/MainActivity.kt
index ef6673b..1498d46 100644
--- a/privacysandbox/ui/integration-tests/testapp/src/main/java/androidx/privacysandbox/ui/integration/testapp/MainActivity.kt
+++ b/privacysandbox/ui/integration-tests/testapp/src/main/java/androidx/privacysandbox/ui/integration/testapp/MainActivity.kt
@@ -41,9 +41,8 @@
import kotlinx.coroutines.launch
class MainActivity : AppCompatActivity() {
- private lateinit var mSdkSandboxManager: SdkSandboxManagerCompat
+ private lateinit var sdkSandboxManager: SdkSandboxManagerCompat
- private var mSdkLoaded = false
private lateinit var sdkApi: ISdkApi
private lateinit var webViewBannerView: SandboxedSdkView
@@ -62,33 +61,34 @@
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
- mSdkSandboxManager = SdkSandboxManagerCompat.from(applicationContext)
+ sdkSandboxManager = SdkSandboxManagerCompat.from(applicationContext)
- if (!mSdkLoaded) {
- Log.i(TAG, "Loading SDK")
- CoroutineScope(Dispatchers.Default).launch {
- try {
- mSdkSandboxManager.loadSdk(MEDIATEE_SDK_NAME, Bundle())
- val loadedSdk = mSdkSandboxManager.loadSdk(SDK_NAME, Bundle())
- mSdkSandboxManager.registerAppOwnedSdkSandboxInterface(
+ Log.i(TAG, "Loading SDK")
+ CoroutineScope(Dispatchers.Default).launch {
+ try {
+ val loadedSdks = sdkSandboxManager.getSandboxedSdks()
+ var loadedSdk = loadedSdks.firstOrNull { it.getSdkInfo()?.name == SDK_NAME }
+ if (loadedSdk == null) {
+ loadedSdk = sdkSandboxManager.loadSdk(SDK_NAME, Bundle())
+ sdkSandboxManager.loadSdk(MEDIATEE_SDK_NAME, Bundle())
+ sdkSandboxManager.registerAppOwnedSdkSandboxInterface(
AppOwnedSdkSandboxInterfaceCompat(
MEDIATEE_SDK_NAME,
/*version=*/ 0,
AppOwnedMediateeSdkApi(applicationContext)
)
)
- onLoadedSdk(loadedSdk)
- } catch (e: LoadSdkCompatException) {
- Log.i(TAG, "loadSdk failed with errorCode: " + e.loadSdkErrorCode +
- " and errorMsg: " + e.message)
}
+ onLoadedSdk(loadedSdk)
+ } catch (e: LoadSdkCompatException) {
+ Log.i(TAG, "loadSdk failed with errorCode: " + e.loadSdkErrorCode +
+ " and errorMsg: " + e.message)
}
}
}
private fun onLoadedSdk(sandboxedSdk: SandboxedSdkCompat) {
Log.i(TAG, "Loaded successfully")
- mSdkLoaded = true
sdkApi = ISdkApi.Stub.asInterface(sandboxedSdk.getInterface())
webViewBannerView = findViewById(R.id.webview_ad_view)