我的目标: 在Android应用程序中以编程方式创建EAP WiFi配置,包括CA证书。
问题: 如何通过编程方式安装CA证书(然后在EAP WiFi配置中引用该证书)?
我已经找到了一个非常有用的链接,允许我在此处创建和保存EAP WiFi配置: 如何在Android中以编程方式创建和读取WEP/EAP WiFi配置?
但是这假定您已经在设备上安装了CA证书。我想从我的应用程序中安装证书 - 要么来自应用程序中的资源,要么从服务器发送。
这个可能吗?(在这种情况下无法获取root权限) 如果可以,怎么办?
附加信息...
我还发现了一种向密钥库添加证书的方法: https://dev59.com/pG855IYBdhLWcg3wPBpx#4490543
但是这仅用于创建安全套接字并通过HTTPS进行连接。我想将证书用于WiFi。
不幸的是,我尚未找到一种通过应用程序编程方式安装CA证书的方法。
但是,在Android的Web浏览器中可以安装证书。因此,解决方案(暂时)是: 启动意图以在Web浏览器中打开直接到CA证书的URL。
这个方法有效,但是存在一些挑战:
- 用户必须命名证书。这是一个挑战,因为我们正在通过编程方式添加WiFi配置。因此,我们必须要求用户给证书赋相同的名称。
- 用户必须输入密码。如果他们没有设置密码,用户将创建一个并输入两次。如果他们已经设置了安全密码,用户将不得不记住相同的密码并输入它。
- 假设用户成功完成了这些步骤,他将被留在浏览器中。
这引出了一些问题:
- 从我的应用程序中,是否有一种方式强制用户为通过浏览器安装的证书命名?
- 从我的应用程序中,是否有任何方法可以知道证书安装何时完成,然后将焦点返回到我的应用程序?
如果需要澄清,请告诉我。