What I've discovered is the knox activation system can only activate 1 license at a time. Based on sample code i've seen, it appears like it can activate all keys at the same time (but it really can't). See below which is taken from the seap api page for activating licenses.
// Import packages
//Activate ELM key
EnterpriseLicenseManager elm =
//Activate KLM key
KnoxEnterpriseLicenseManager klm =
To solve the problem, in the broadcastreceiver, listen for 2 different intent filters...
<receiver android:name=".receivers.KnoxReceiver" android:enabled="true" android:exported="true">
<!--<action android:name="com.samsung.android.knox.intent.action.LICENSE_STATUS" />-->
<action android:name="edm.intent.action.license.status" />
<action android:name="edm.intent.action.knox_license.status" />
the knox_license.status filter will receiver knox activation and the license.status will receive the elm activation response. In the receiver then, conditionally handle each case so when knox license is done activating, fire off the klm.activatelicense() method. This does them synchronously and will be completely ready to go at the end of the calls (if you get success messages in the response). If you don't do it this way, you end up having to run the license activation routine twice.
I hope this helps someone out.