Android

Portal provides MPC wallets and dApp connections for organizations and their users. To integrate Portal, an organization adds a client library to their mobile app and a few server API endpoints.

Installation

Update the dependencies in your build.gradle to include the portal-android dependency

...
dependencies {
    ...
    implementation "io.portalhq.android:portal-android:X.X.X"
}

Initializing Portal

After you update your build.gradle file, you must sync gradle and you're ready to import Portal into an Activity of your choice.

With the Portal Android dependency now installed, we can now create an instance of the Portal class. Below is an example of how you can do this. In this example, we're using your app's MainActivity.

package io.portalhq.android.app

import io.portalhq.android.Portal
import io.portalhq.android.storage.cloud.google.GoogleStorage
import io.portalhq.android.storage.mobile.Keychain

class MainActivity : AppCompatActivity() {
    lateinit val portal: Portal
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        
        // Initialize your Portal instance.
        portal = Portal(
            // A Portal client API key. You can obtain one from Portal's REST API.
            CLIENT_API_KEY,
            // 👇 Don't forget to replace below with your own Google Client ID.
            GoogleStorage(YOUR_GOOGLE_CLIENT_ID, this),
            // The EVM network chain ID. (5 = Goerli)
            5,
            // An instance of Portal's Keychain.
            Keychain(applicationContext),
            // A map of chainIDs to Gateway URLs (e.g. Infura, Alchemy, etc.)
            mapOf(5 to YOUR_GATEWAY_URL),
             //Preconfigured Portal Version Number
            v1,
            // A boolean to auto-approve transactions.
            true,
        )
    }
}

Now that we have our Portal instance, the next step is to generate a wallet. Let's create one!

If you are using Client Session Tokens (CSTs), this hint is for you.

When your user's CST expires, all Portal SDKs will throw an error on the next MPC Operation the user makes (e.g. creating a wallet, backing up a wallet, recovering a wallet, or signing). That error will include a code SESSION_EXPIRED in the SDK methods, which you can use as an indicator to refresh your CST.

Last updated