我有一个 Android 应用程序,可以在网络视图中调用安全网站。
webview 检索证书并将其提供给网站。
我必须使用KeyChain.choosePrivateKeyAlias(this, keyChainAliasCallback, null, null, null, -1, CERT_ALIAS);
方法,这会显示一个像这样的对话框
我只想在用户第一次使用该应用程序时显示此窗口,但我不知道是否可行。
我看到关于使用设备/所有者配置文件拦截此内容。这是否意味着它应该在 android 上工作?对我来说有点模糊。
另一个解决方案是将证书和私钥保存在任何其他应用程序或用户都无法访问的地方。我考虑私有模式下的 SharedPreferences。
我错了吗 ?
感谢您的回答 !
我不确定解决这个问题的最佳方法,但这就是我所做的,对我来说效果很好。
我在首选项中检查了一个布尔变量,如果它返回 false,我会显示choosePrivateKeyAlias
窗户。如果返回 true,我就知道我有权直接检索证书,因此无需显示弹出窗口。
boolean isGranted = prefs.getBoolean("MY_CERT", false);
if(!isGranted) {
//Get cert and private key from internal android store
KeyChainAliasCallback keyChainAliasCallback = new KeyChainAliasCallback() {
@Override
public void alias(@Nullable String s) {
Log.d(TAG, "selected alias = " + s);
SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
editor.putBoolean("MY_CERT", true);
editor.commit();
retriveCertsTask.execute();
}
};
KeyChain.choosePrivateKeyAlias(mActivity, keyChainAliasCallback, null, null, null, -1, CERT_ALIAS);
} else {
// Retrieve certs an private key
retriveCertsTask.execute();
}
}
希望能帮助到你...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)