2017-10-02 2 views
0

Ich habe gerade die Bewegungen gemacht, eine Knox Enabled App (KEA) zu machen und nichts scheint auf dem Gerät passieren - es läuft nur wie eine andere App. Wie erkenne ich, ob Knox tatsächlich aktiviert ist? Ich verstehe, dass meine Apps in einem eigenen Knox Container sein sollten? - Gibt es eine Möglichkeit, das herauszufinden oder zu testen?Wie eine Knox Enabled App zu testen ist, ist knox aktiviert

Antwort

0

Gemäß der Knox-API (Standard oder Premium) besteht keine Möglichkeit, einfach abzufragen, ob Knox bereits aktiviert ist. Insbesondere gibt es keine einfache boolesche Rückgabe "knoxlib.isKnoxActivated();"

Zunächst einmal möchte ich überprüfen, wie die Knox Aktivierungsprozess funktioniert:

  1. Ihre Knox Aktiviert App benötigt sowohl für die ELM & KLM (Enterprise License Management und Knox License Management Klassen für 'activateLicense' nennen).

  2. Das Gerät muss einen Netzwerkpfad zum Knox-Lizenzserver haben, unabhängig davon, ob es sich um das zentrale Online-Gerät von Samsung oder den lokalen Knox-Lizenzserver Ihres Unternehmens handelt.

  3. Ihre Knox-fähige App muss über einen Broadcast-Empfänger verfügen, um eine Antwort vom Knox-Lizenzserver zu erhalten.

Vergessen Sie auch nicht die Rundfunkempfänger im Manifest zu registrieren, wie folgt aus:

<receiver> 
    android:name=".KnoxLicenseReceiver" 
    android:enabled="true" 
    android:exported="true" 
    <intent-filter> 
     <action android:name="edm.intent.action.license.status" /> 
     <action android:name="edm.intent.action.knox_license.status" /> 
    </intent-filter> 
</receiver> 

Ihre Rundfunkempfänger Klasse so etwas wie dies unten aussehen sollte.

public class KnoxLicenseReceiver extends BroadcastReceiver { 

    private final String LOGTAG = KnoxLicenseReceiver.class.getSimpleName(); 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     SharedPreferences.Editor sharedPrefEditor = context.getSharedPreferences(Constants.SHARED_PREF_NAME, Context.MODE_PRIVATE).edit(); 
     String action; 
     int errorCode; 
     if (intent != null) { 
      action = intent.getAction(); 
      if (action != null) { 
       // If received an ELM response 
       if (EnterpriseLicenseManager.ACTION_LICENSE_STATUS.equals(action)) { 
        errorCode = intent.getIntExtra(EnterpriseLicenseManager.EXTRA_LICENSE_ERROR_CODE, Constants.DEFAULT_ERROR); 
        // If successfully activated 
        if (errorCode == EnterpriseLicenseManager.ERROR_NONE) { 
         Log.i(LOGTAG, "ELM activated successfully."); 
         sharedPrefEditor.putBoolean(Constants.ELM_ACTIVATED, true); 
        } else { 
         Log.i(LOGTAG, "ELM failed to activate with error code: " + errorCode); 
         sharedPrefEditor.putBoolean(Constants.ELM_ACTIVATED, false); 
        } 
       } 

       // If received a KLM response 
       if (KnoxEnterpriseLicenseManager.ACTION_LICENSE_STATUS.equals(action)) { 
        errorCode = intent.getIntExtra(KnoxEnterpriseLicenseManager.EXTRA_LICENSE_ERROR_CODE, Constants.DEFAULT_ERROR); 
        // If successfully activated 
        if (errorCode == KnoxEnterpriseLicenseManager.ERROR_NONE) { 
         Log.i(LOGTAG, "KLM activated successfully."); 
         sharedPrefEditor.putBoolean(Constants.KLM_ACTIVATED, true); 
        } else { 
         Log.i(LOGTAG, "KLM failed to activate with error code: " + errorCode); 
         sharedPrefEditor.putBoolean(Constants.KLM_ACTIVATED, false); 
        } 
       } 
      } 
     } 
     // Store shared pref changes 
     sharedPrefEditor.apply(); 
    } 
} 
+0

Eine andere Sache, die Sie beachten sollten, ist, dass Samsung auf ihren Entwickler-Foren (siehe Link) bestätigt hat, dass Ihre Knox App aktiviert sein, ‚activateLicense‘ nennen, auch wenn eine andere Knox aktiviert App bereits getan hat, so auf, dass gleiches Gerät. Die Lizenzen aktivieren Knox nicht einfach nur für eine Knox-fähige App auf dem Gerät, sondern spezifisch für die App, die 'activateLicense' aufruft. Dies bedeutet, dass Sie, wenn Sie zwei Knox-fähige Apps haben, zwei Knox-Lizenzen benötigen, um dieses einzelne Gerät vollständig zu aktivieren. https://seap.samsung.com/forum-topic/piggy-backing-activation-possible –

Verwandte Themen