Activate Knox License
The following instructions describe how to upgrade your Android Work Profile to a premium Knox Workspace. This is done by having the Profile Owner (PO) activate a Knox license.
Upgrade to a Knox Workspace
Upgrading from your Android Work Profile to a premium Knox Workspace is easy. All you need to do is activate a Knox License, and your profile automatically updates. You can activate a Knox license in 4 steps:
- Get a Knox License
- Create the license receiver class
- Register the license receiver class
- Call the Activate license API
Create the License Receiver class
In your app, create a new class called SampleLicenseReceiver.java
. This contains a license receiver for your KPE key.
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;
import com.samsung.android.knox.license.KnoxEnterpriseLicenseManager;
public class SampleLicenseReceiver extends BroadcastReceiver {
private static final int DEFAULT_ERROR_CODE = -1;
private void showToast(Context context, String msg) {
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
}
@Override
public void onReceive(Context context, Intent intent) {
if (intent == null) {
// No intent action is available
showToast(context, context.getResources().getString(R.string.no_intent));
} else {
String action = intent.getAction();
if (action == null) {
// No intent action is available
showToast(context, context.getResources().getString(R.string.no_intent_action));
} else if (action.equals(KnoxEnterpriseLicenseManager.ACTION_LICENSE_STATUS)) {
// ELM activation result Intent is obtained
int errorCode = intent.getIntExtra(
KnoxEnterpriseLicenseManager.EXTRA_LICENSE_ERROR_CODE, DEFAULT_ERROR_CODE);
if (errorCode == KnoxEnterpriseLicenseManager.ERROR_NONE) {
// ELM activated successfully
showToast(context, context.getResources().getString(R.string.kpe_activated_succesfully));
Log.d("SampleLicenseReceiver", context.getString(R.string.kpe_activated_succesfully));
} else {
// KPE activation failed
// Display KPE error message
String errorMessage = getKPEErrorMessage(context, intent, errorCode);
showToast(context, errorMessage);
Log.d("SampleLicenseReceiver", errorMessage);
}
}
}
}
private String getKPEErrorMessage(Context context, Intent intent, int errorCode) {
String message;
switch (errorCode) {
case KnoxEnterpriseLicenseManager.ERROR_INTERNAL:
message = context.getResources().getString(R.string.err_kpe_internal);
break;
case KnoxEnterpriseLicenseManager.ERROR_INTERNAL_SERVER:
message = context.getResources().getString(R.string.err_kpe_internal_server);
break;
case KnoxEnterpriseLicenseManager.ERROR_INVALID_LICENSE:
message = context.getResources().getString(R.string.err_kpe_licence_invalid_license);
break;
case KnoxEnterpriseLicenseManager.ERROR_INVALID_PACKAGE_NAME:
message = context.getResources().getString(R.string.err_kpe_invalid_package_name);
break;
case KnoxEnterpriseLicenseManager.ERROR_LICENSE_TERMINATED:
message = context.getResources().getString(R.string.err_kpe_licence_terminated);
break;
case KnoxEnterpriseLicenseManager.ERROR_NETWORK_DISCONNECTED:
message = context.getResources().getString(R.string.err_kpe_network_disconnected);
break;
case KnoxEnterpriseLicenseManager.ERROR_NETWORK_GENERAL:
message = context.getResources().getString(R.string.err_kpe_network_general);
break;
case KnoxEnterpriseLicenseManager.ERROR_NOT_CURRENT_DATE:
message = context.getResources().getString(R.string.err_kpe_not_current_date);
break;
case KnoxEnterpriseLicenseManager.ERROR_NULL_PARAMS:
message = context.getResources().getString(R.string.err_kpe_null_params);
break;
case KnoxEnterpriseLicenseManager.ERROR_UNKNOWN:
message = context.getResources().getString(R.string.err_kpe_unknown);
break;
case KnoxEnterpriseLicenseManager.ERROR_USER_DISAGREES_LICENSE_AGREEMENT:
message = context.getResources().getString(R.string.err_kpe_user_disagrees_license_agreement);
break;
case KnoxEnterpriseLicenseManager.ERROR_LICENSE_DEACTIVATED:
message = context.getResources().getString(R.string.err_kpe_license_deactivated);
break;
case KnoxEnterpriseLicenseManager.ERROR_LICENSE_EXPIRED:
message = context.getResources().getString(R.string.err_kpe_license_expired);
break;
case KnoxEnterpriseLicenseManager.ERROR_LICENSE_QUANTITY_EXHAUSTED:
message = context.getResources().getString(R.string.err_kpe_license_quantity_exhausted);
break;
case KnoxEnterpriseLicenseManager.ERROR_LICENSE_ACTIVATION_NOT_FOUND:
message = context.getResources().getString(R.string.err_kpe_license_activation_not_found);
break;
case KnoxEnterpriseLicenseManager.ERROR_LICENSE_QUANTITY_EXHAUSTED_ON_AUTO_RELEASE:
message = context.getResources().getString(R.string.err_kpe_license_quantity_exhausted_on_auto_release);
break;
default:
// Unknown error code
String errorStatus = intent.getStringExtra(
KnoxEnterpriseLicenseManager.EXTRA_LICENSE_STATUS);
message = context.getResources()
.getString(R.string.err_kpe_code_unknown, Integer.toString(errorCode), errorStatus);
}
return message;
}
}
Register the License Receiver class
When the KPE license is validated, the com.samsung.android.knox.intent.action.KNOX_LICENSE_STATUS
intent is emitted. The app uses the SampleLicenseReceiver
class to intercept this intent.
Paste this code in AndroidManifest.xml to define the receiver for com.samsung.android.knox.intent.action.KNOX_LICENSE_STATUS
intents:
<receiver android:name="com.samsung.knox.example.knoxworkspace.SampleLicenseReceiver" >
<intent-filter>
<action android:name="com.samsung.android.knox.intent.action.KNOX_LICENSE_STATUS" />
</intent-filter>
</receiver>
When your app receives a com.samsung.android.knox.intent.action.KNOX_LICENSE_STATUS
intent, it passes the intent SampleLicenseReceiver.onReceive()
. Use this method to have your app respond to the license activation.
Activate the license
Use this method in your MainActivity to activate the license.
private void activateLicense() {
// Instantiate the KnoxEnterpriseLicenseManager class to use the activateLicense method
KnoxEnterpriseLicenseManager licenseManager = KnoxEnterpriseLicenseManager.getInstance(this);
// License activation TODO Add license key to Constants.java
licenseManager.activateLicense(Constants.KPE_LICENSE_KEY, getPackageName());
mUtils.log(getResources().getString(R.string.license_progress));
}
When you launch the app for the first time and activate the license, you will see a Samsung confirmation dialog that only appears once per license activation. Agree to the terms and conditions and tap CONFIRM.
See also:
Tutorial progress
You’ve completed 4/6 steps!
NextOn this page
Is this page helpful?