Skip to content

Conversation

@witrisna
Copy link
Contributor

@witrisna witrisna commented Jan 6, 2026

This commit introduces a new sample application, "kotlin-journey," built with Kotlin and Jetpack Compose to demonstrate the Android SDK's capabilities.

Key features include:

  • Integration of the Journey SDK for handling authentication flows.
  • Implementation of various callback types, including SelectIdpCallback, DeviceBindingCallback, and PingOneProtect.
  • A modern UI built with Jetpack Compose, featuring Material 3 components, custom themes, and navigation.
  • A UserProfile screen to display user information and manage associated devices.
  • A Token screen for viewing and managing access tokens.
  • An environment selection screen to switch between server configurations.

@witrisna witrisna self-assigned this Jan 6, 2026
spetrov
spetrov previously approved these changes Jan 8, 2026
Copy link
Contributor

@spetrov spetrov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great!
I have only 2 minor comment that you may want to take a look into...

3. Open the Android sample project(kotlin-journey) in [Android Studio](https://developer.android.com/studio).
4. Open the `EnvViewModel.kt` file within the project.
5. Locate the TODO and replace the placeholder strings in the Oidc module configuration with the values of your registered OAuth 2.0 application.
- You can add multiple configurations as shown with `testConfig` and `prodConfig` depending on you Oidc module configuration.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The app currently crashes upon launching if both testConfig and prodConfig are not set configured...

com.pingidentity.samples.journeyapp  E  FATAL EXCEPTION: main (Ask Gemini)
       Process: com.pingidentity.samples.journeyapp, PID: 3975
       java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
       	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:576)
       	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:929)
       Caused by: java.lang.reflect.InvocationTargetException
       	at java.lang.reflect.Method.invoke(Native Method)
       	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:566)
       	... 1 more
       Caused by: java.net.MalformedURLException: no protocol: <Discovery Endpoint>

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently, this align with the DaVinci sample App.

I hope developer will look at the Readme before they try out the sample App.
I have added the following comment under the TODO

/*
 * TODO
 * This configuration allows you to provide 2 different environments: testConfig and prodConfig.
 * You must provide valid information for the sample app to work.
 * (If an invalid discoveryEndpoint format is provided, the app may crash)
 *
 * The sample app uses the clientId to differentiate the environment.
 * Use a different clientId for testing.
 */

option = it,
envViewModel.current.clientId == it.clientId
) {
envViewModel.select(it)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not a big deal, but when the clientId on both "test" and "prod" configs are the same, we end up with both environments selected...
image

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See above comments.

vibhorgoswami
vibhorgoswami previously approved these changes Jan 8, 2026
Copy link
Contributor

@vibhorgoswami vibhorgoswami left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

This commit introduces a new sample application, "kotlin-journey," built with Kotlin and Jetpack Compose to demonstrate the Android SDK's capabilities.

Key features include:
- Integration of the Journey SDK for handling authentication flows.
- Implementation of various callback types, including `SelectIdpCallback`, `DeviceBindingCallback`, and `PingOneProtect`.
- A modern UI built with Jetpack Compose, featuring Material 3 components, custom themes, and navigation.
- A `UserProfile` screen to display user information and manage associated devices.
- A `Token` screen for viewing and managing access tokens.
- An environment selection screen to switch between server configurations.
@spetrov spetrov merged commit e934ddc into main Jan 13, 2026
@spetrov spetrov deleted the SDKS-4615 branch January 13, 2026 01:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

4 participants