Preeti Tiwari
Preeti Tiwari

Reputation: 357

deprecated OnActivityResult() in androidx

OnActivityResult() is deprecated in androidx. I took reference from below links

I implemented for signup thing in my project ..like .I created resultcontract by registering the activity in place of startActivityForResult i replaced by resultcontract.launch(intent) and getting result in resultcontract (followed above links). Now i have doubt in one function that is turn on gps. for this we have used

val rae = e as ResolvableApiException
rae.startResolutionForResult(context, GPS_REQUEST)

earlier it was startActivityForResult , now it is startResolutionForResult having confusion how to get result of gps request ( in code , we are getting result in onActivityResult).how can i implement this using new way?

Upvotes: 12

Views: 4351

Answers (1)

Gustavo Ross
Gustavo Ross

Reputation: 429

I found a solution for this problem, using the recent API's to start something for result.

So, you can pretty much get the resolution from ResolvableApiException, which is a PendingIntent, and start it with StartIntentSenderForResult contract, like this

contract:

private val resolutionForResult = registerForActivityResult(
    ActivityResultContracts.StartIntentSenderForResult()
) { activityResult ->

    // do whatever you want with activity result...

}

how to start:

.addOnFailureListener { exception ->
    if (exception is ResolvableApiException) {
        try {
            val intentSenderRequest = IntentSenderRequest
                    .Builder(exception.resolution).build()
            resolutionForResult.launch(intentSenderRequest)
        } catch (throwable: Throwable) {
            // Ignore the error.
        }
    }
}

Upvotes: 37

Related Questions