我正在考虑在我的VPN安卓应用中复制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文件?任何想法都会非常有用!!