Как совместимое с Samsung Knox приложение определяет, находится ли оно в контейнере Knox?

Я разработал приложение для работы в среде Samsung Knox. Из-за ограничений среды Knox мне нужно, чтобы приложение реагировало по-разному в зависимости от того, находится ли оно в контейнере Knox или вне его. Как приложение может определить программно, было ли оно развернуто внутри контейнера?


person Greg N    schedule 08.12.2016    source источник


Ответы (2)


У меня похожая проблема, хотя наше приложение НЕ предназначено для работы в среде Knox, но некоторые пользователи все равно помещают его туда... Поэтому я ищу аналогичную функцию. Я нашел следующее, что может вам помочь. К сожалению, для нас это не работает, так как работает только при включении Knox Premium SDK: https://seap.samsung.com/faq/how-does-app-detect-if-container-былсоздан

Короче, есть два способа проверить. Либо вызовите это в коде:

KnoxContainerManager.getContainers()

Или добавьте это в свой манифест и добавьте прослушиватель вещания:

    <receiver
        android:name=".receiver.KnoxContainerReceiver"
        android:exported="true" >
        <intent-filter>
            <action android:name="com.samsung.knox.container.creation.status" />
        </intent-filter>
    </receiver>

public class KnoxContainerReceiver extends BroadcastReceiver{
    @Override public void onReceive(Context context, Intent intent ){
    //do something
    }
}

Если кто-нибудь найдет решение, которое работает без SDK, мне очень интересно его услышать.

person Kasium    schedule 20.01.2017
comment
ссылка на самсунг мертва - person Nick; 12.04.2018

Для дальнейшего использования, это то, что я использую:

public static boolean isKnoxCaller() {
        int PER_USER_RANGE = 10000;
        int user_id = Binder.getCallingUid() / PER_USER_RANGE;
        return user_id >= 100 && user_id < 1000;
    }
person Daniel Grigoriev    schedule 10.07.2019