How to read profiles
Prerequisite: Insight Mobile (Android) version 1.7.0, and SDK version 1.4.0 or higher.
To get all available configuration profiles, call getConfigProfiles()
on your PgManager
reference with the following parameters:
- The object implementing
IPgGetConfigProfilesCallback
. After reading the profiles (or in case of any errors), theIPgGetConfigProfilesCallback
is called with the relevant information.
You can also broadcast an Intent with the following data:
- Action:
com.proglove.api.GET_CONFIG_PROFILES
- No extras
Example code:
pgManager.getConfigProfiles(
object : IPgGetConfigProfilesCallback {
override fun onConfigProfilesReceived(profiles: Array<PgConfigProfile>) {
val activeProfileId = profiles.firstOrNull { profile ->
profile.isActive
}?.profileId
runOnUiThread {
Toast.makeText(
applicationContext,
"Received ${profiles.size} config profiles with \"$activeProfileId\" as the active one",
Toast.LENGTH_LONG
).show()
}
}
override fun onError(error: PgError) {
runOnUiThread {
Toast.makeText(
applicationContext,
"Failed to get profiles - $error",
Toast.LENGTH_LONG
).show()
}
}
}
)
val intent = Intent()
intent.setAction("com.proglove.api.GET_CONFIG_PROFILES")
sendBroadcast(intent)
// This will trigger the `com.proglove.api.CONFIG_PROFILES` broadcast from the Insight Mobile app.
// The broadcasted Intent contains the list of all configuration profiles and the active profile.
// To receive the broadcasted intent:
// 1 Implement a broadcast receiver (in this case the class is called `MessageHandler`):
class MessageHandler : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
if (intent != null && intent.action == "com.proglove.api.CONFIG_PROFILES") {
val configProfilesIds : Array<String> = intent.getStringArrayExtra(ApiConstants.EXTRA_CONFIG_PROFILE_ID) ?: emptyArray()
val activeProfileId = intent.getStringExtra(ApiConstants.EXTRA_CONFIG_PROFILE_ACTIVE_ID) ?: ""
runOnUiThread {
Toast.makeText(
applicationContext,
"Received ${configProfilesIds.size} config profiles with \"$activeProfileId\" as the active one",
Toast.LENGTH_LONG
).show()
}
}
}
}
// 2 define an IntentFilter filtering for the specified actions:
val messageHandler: MessageHandler = MessageHandler()
val filter = IntentFilter()
filter.addAction("com.proglove.api.CONFIG_PROFILES")
filter.addCategory(Intent.CATEGORY_DEFAULT)
// 3 Somewhere where a context is available (usually an Activity's or Service's onCreate):
context.registerReceiver(messageHandler, filter)
// Do not forget to unregister the receiver again, for example in onDestroy:
context.unregisterReceiver(messageHandler)