我正在研究在我的 VPN android 应用程序中复制 Always-On VPN(在 Android 4.2 中引入)功能。我当然可以将用户引导到设置页面并让他们单击复选框,但我真的很想将它烘焙到我的应用程序中。我浏览了这个对话框的 android 源代码(因为 SDK 中没有公开相应的设置),看起来很简单:
public void onClick(DialogInterface dialog, int which) {
final int newIndex = listView.getCheckedItemPosition();
if (mCurrentIndex == newIndex) return;
if (newIndex == 0) {
keyStore.delete(Credentials.LOCKDOWN_VPN);
} else {
final VpnProfile profile = mProfiles.get(newIndex - 1);
if (!profile.isValidLockdownProfile()) {
Toast.makeText(context, R.string.vpn_lockdown_config_error,
Toast.LENGTH_LONG).show();
return;
}
keyStore.put(Credentials.LOCKDOWN_VPN, profile.key.getBytes());
}
// kick profiles since we changed them
ConnectivityManager.from(getActivity()).updateLockdownVpn();
}
不幸的是,这里的密钥库是 android.security.KeyStore 文件,而不是通常的 java.security.KeyStore。因此,我的问题是,在我的应用程序中实现此代码块的最佳方式是什么?我是否可以在没有 root 访问权限的情况下更改我的应用程序中的此设置?有没有办法让我包含 android.security.KeyStore 文件?任何想法都会非常有帮助!