import
android.content.Context
import
android.os.Bundle
import
android.os.RemoteException
import
android.widget.Toast
import
androidx.activity.ComponentActivity
import
androidx.activity.compose.setContent
import
androidx.compose.foundation.layout.*
import
androidx.compose.material.*
import
androidx.compose.runtime.*
import
androidx.compose.ui.Alignment
import
androidx.compose.ui.Modifier
import
androidx.compose.ui.graphics.*
import
androidx.compose.ui.platform.LocalContext
import
androidx.compose.ui.text.font.FontWeight
import
androidx.compose.ui.text.style.TextAlign
import
androidx.compose.ui.unit.*
import
com.android.installreferrer.api.InstallReferrerClient
import
com.android.installreferrer.api.InstallReferrerStateListener
import
com.android.installreferrer.api.ReferrerDetails
import
com.example.newcanaryproject.ui.theme.*
class
MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super
.onCreate(savedInstanceState)
setContent {
NewCanaryProjectTheme {
Surface(
modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background
) {
Scaffold(
topBar = {
TopAppBar(backgroundColor = greenColor,
title = {
Text(
text =
"Google Play Install Referrer"
,
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center,
color = Color.White
)
})
}) {
GooglePlayInstallReferrer(LocalContext.current)
}
}
}
}
}
}
@Composable
fun GooglePlayInstallReferrer(ctx: Context) {
val referrer = remember {
mutableStateOf(
""
)
}
var referrerClient: InstallReferrerClient = InstallReferrerClient.newBuilder(ctx).build();
referrerClient.startConnection(object : InstallReferrerStateListener {
override fun onInstallReferrerSetupFinished(responseCode: Int) {
when (responseCode) {
InstallReferrerClient.InstallReferrerResponse.OK -> {
var response: ReferrerDetails? =
null
try
{
response = referrerClient.installReferrer
val referrerUrl = response.installReferrer
val referrerClickTime = response.referrerClickTimestampSeconds
val appInstallTime = response.installBeginTimestampSeconds
val instantExperienceLaunched = response.googlePlayInstantParam
var refrer = response.installReferrer
referrer.value =
"Referrer is : \n$referrerUrl\nReferrer Click Time is : $referrerClickTime\nApp Install Time : $appInstallTime"
}
catch
(e: RemoteException) {
e.printStackTrace()
}
}
InstallReferrerClient.InstallReferrerResponse.FEATURE_NOT_SUPPORTED ->
Toast.makeText(
ctx,
"Feature not supported.."
,
Toast.LENGTH_SHORT
).show()
InstallReferrerClient.InstallReferrerResponse.SERVICE_UNAVAILABLE ->
Toast.makeText(
ctx,
"Fail to establish connection"
,
Toast.LENGTH_SHORT
).show()
}
}
override fun onInstallReferrerServiceDisconnected() {
Toast.makeText(ctx,
"Service disconnected.."
, Toast.LENGTH_SHORT)
.show()
}
})
Column(
modifier = Modifier
.fillMaxSize()
.padding(horizontal =
20
.dp),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
Text(
text =
"Google Play Install Referrer"
,
color = greenColor,
fontSize =
20
.sp,
fontWeight = FontWeight.Bold
)
Spacer(modifier = Modifier.height(
20
.dp))
Text(
text = referrer.value,
color = Color.Black,
fontSize =
18
.sp,
textAlign = TextAlign.Center
)
}
}