-- 作者 谢恩铭 转载请注明出处

内容简介


  1. 前言
  2. 三星的KNOX容器例子app
  3. 我改动后的源码
  4. 主要的改动
  5. 后记

1. 前言


上一篇【Android信息安防】三星KNOX容器(1)中, 我们简介了Android的容器概念和三星的KNOX容器, 这次我们要来看一下创建KNOX容器的例子app, 以及我的实现。

下文中Container和容器可以互换。因为容器的英语就是Container。

不过今天这里讲的三星KNOX和KNOX的容器技术, 如果你不是用三星手机, 那么基本不太会接触。

2. 三星的KNOX容器例子app


三星官网的KNOX Container使用手册页面

你需要首先注册一个三星开发者账号。创建成功之后,登录。然后在你的开发者后台可以创建和管理你的开发者License(证书)。

三星提供了一个开放源码的Container例子app,在这里 ,不过须要首先登录开发者账户才能获取。

这个例子app就是一个Android项目,把它用Android Studio运行起来,使用截图如下所示:

初始界面
须要填入Enterprise License和KNOX License
激活了Enterprise License和KNOX License之后显示的界面
选择要创建的Container类型

我的app扩充了三星的KNOX Container(容器)例子app , 加入了新功能:

  • 在把app迁移到Container之前保存app的数据
  • 迁移app到Container
  • 导入保存的数据到Container中的app
    (因为app从Container外迁移到Container里,会首先删除所有数据)

3. 我改动后的源码


源码在我的Github上:

https://github.com/frogoscar/knox-container

有时间可以研究一下源码,如果是做Android开发的朋友,应该不难理解此源码。

如果要方便测试, 可以把你在开发者后台创建的Enterprise License和Knox License分别填入源码的几个EditText里 :

edtKLM.setText("你的KNOX License");
edtELM.setText("你的Enterprise License");

, 就不用每次复制黏贴了。

测试截图:

4. 主要的改动


  • ContainerCreationRemovalActivity.java中的populateAPIList里增加一个菜单项:
arrAPIs.add(new ListItem(count++,      
getString(R.string.api_install_application_in_container),      
APIType.DISPLAY_NUMERIC_EDITTEXT_POPUP,      
KnoxSDKVersion.VER_2_0,      
getString(R.string.api_install_application_in_container),      
getString(R.string.enter_container_id), "", null, null, null));
  • 在ContainerCreationRemovalModel.java中的
invokeKNOXAPI(ListItem listItemObj, String userEnteredData, ActivityLauncher activityLauncher)

方法中增加一个case 6, 这个增加的switch的case就对应了上面增加的一个可按的List。

5. 后记


  1. 体验过后发现,三星的KNOX Container确实比Google开发的Android容器(Android for Work)功能更强,更多,安全性能也更好。

  2. Android for Work目前是Android默认的容器技术,而KNOX Container只能存在于三星的移动设备(手机或平板)上。所以如果你不是用三星的设备来做开发,那么KNOX Container就用不上了。


我是谢恩铭,在巴黎奋斗的软件工程师。
热爱生活,喜欢游泳,略懂烹饪。
人生格言:「向着标杆直跑」