-- 作者 谢恩铭 转载请注明出处
内容简介
- 前言
- 三星的KNOX容器例子app
- 我改动后的源码
- 主要的改动
- 后记
1. 前言
上一篇【Android信息安防】三星KNOX容器(1)中, 我们简介了Android的容器概念和三星的KNOX容器, 这次我们要来看一下创建KNOX容器的例子app, 以及我的实现。
下文中Container和容器可以互换。因为容器的英语就是Container。
不过今天这里讲的三星KNOX和KNOX的容器技术, 如果你不是用三星手机, 那么基本不太会接触。
2. 三星的KNOX容器例子app
三星官网的KNOX Container使用手册页面
你需要首先注册一个三星开发者账号。创建成功之后,登录。然后在你的开发者后台可以创建和管理你的开发者License(证书)。
三星提供了一个开放源码的Container例子app,在这里 ,不过须要首先登录开发者账户才能获取。
这个例子app就是一个Android项目,把它用Android Studio运行起来,使用截图如下所示:
我的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. 后记
体验过后发现,三星的KNOX Container确实比Google开发的Android容器(Android for Work)功能更强,更多,安全性能也更好。
Android for Work目前是Android默认的容器技术,而KNOX Container只能存在于三星的移动设备(手机或平板)上。所以如果你不是用三星的设备来做开发,那么KNOX Container就用不上了。
我是谢恩铭,在巴黎奋斗的软件工程师。
热爱生活,喜欢游泳,略懂烹饪。
人生格言:「向着标杆直跑」