Skip to content

Instantly share code, notes, and snippets.

View dhruvtaneja's full-sized avatar

Dhruv Taneja dhruvtaneja

  • Uber
  • Bangalore, India
View GitHub Profile
@dhruvtaneja
dhruvtaneja / well_known.py
Created July 11, 2020 05:27
Script to find app links and check their verification status
"""
Finds the app links and checks if those links are hosting asset links for a package name.
To run this command, make sure adb server is running and there is a device attached.
Usage - python well_known.py [PACKAGE NAME REGEX]
"""
import sys
import requests
import subprocess
import re
@dhruvtaneja
dhruvtaneja / OnActivityResponseInAppUpdate.kt
Created June 5, 2019 18:27
Handling user's action in onActivityResult
companion object {
private const val REQUEST_CODE_FLEXI_UPDATE = 17362
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQUEST_CODE_FLEXI_UPDATE) {
when (resultCode) {
Activity.RESULT_OK -> { // handle user's approval }
Activity.RESULT_CANCELED -> { // handle user's rejection }
@dhruvtaneja
dhruvtaneja / build.gradle
Created June 5, 2019 18:20
Dependency for in-app updates
dependencies {
implementation 'com.google.android.play:core:1.6.0'
}
@dhruvtaneja
dhruvtaneja / InAppUpdateWithLogs.kt
Created May 29, 2019 18:47
in app update activity snippet with lots of logs
fun Context.showToast(text: String, duration: Int = Toast.LENGTH_LONG) {
Toast.makeText(this, text, duration).show()
}
override fun onStateUpdate(installState: InstallState) {
if (installState.installStatus() == InstallStatus.DOWNLOADED) {
showToast("download complete", Toast.LENGTH_LONG)
showUpdateSnackbar()
}
}
@dhruvtaneja
dhruvtaneja / InAppUpdateObservable.kt
Created May 29, 2019 18:14
In app update check with live data
private fun checkForUpdate() {
appUpdateManager.appUpdateInfo.addOnSuccessListener {
if (it.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE &&
it.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
updateInfo.value = it
updateAvailable.value = true
} else {
updateInfo.value = null
updateAvailable.value = false
}
override fun onResume() {
super.onResume()
appUpdateManager.appUpdateInfo.addOnSuccessListener {
if (it.installStatus() == InstallStatus.DOWNLOADED) {
notifyUser()
}
}
}
class MainActivity : AppCompatActivity(), InstallStateUpdatedListener {
override fun onStateUpdate(installState: InstallState) {
if (installState.installStatus() == InstallStatus.DOWNLOADED) {
notifyUser()
}
}
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
@dhruvtaneja
dhruvtaneja / ImmediateUpdate_OnResume.kt
Created May 27, 2019 17:25
Handling activity lifecycle during immediate in-app update
override fun onResume() {
super.onResume()
appUpdateManager.appUpdateInfo.addOnSuccessListener {
if (it.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) {
appUpdateManager.startUpdateFlowForResult(
it,
AppUpdateType.IMMEDIATE,
this,
REQUEST_CODE_FLEXI_UPDATE
)
@dhruvtaneja
dhruvtaneja / MainActivity_RequestUpdate.kt
Last active May 27, 2019 16:49
function that fires up update request flow
private fun requestUpdate(appUpdateInfo: AppUpdateInfo?) {
appUpdateManager.startUpdateFlowForResult(
appUpdateInfo,
AppUpdateType.FLEXIBLE, // HERE specify the type of update flow you want
this, // the instance of an activity
REQUEST_CODE_FLEXIBLE_UPDATE
)
}
@dhruvtaneja
dhruvtaneja / MainActivity_InAppUpdates.kt
Last active May 27, 2019 16:32
Android activity that checks for app updates
class MainActivity : AppCompatActivity() {
private lateinit var appUpdateManager: AppUpdateManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
appUpdateManager = AppUpdateManagerFactory.create(this)