Java 无法从密钥库中删除别名-KeyStore.store抛出UnsupportedOperationException
我也有同样的问题。这个问题的解决方案是“调用密钥库上的.store()方法来刷新更改”,这似乎很好 我的问题是,我正在使用AndroidKeyStore,它似乎不支持该操作。我的代码如下:Java 无法从密钥库中删除别名-KeyStore.store抛出UnsupportedOperationException,java,android,Java,Android,我也有同样的问题。这个问题的解决方案是“调用密钥库上的.store()方法来刷新更改”,这似乎很好 我的问题是,我正在使用AndroidKeyStore,它似乎不支持该操作。我的代码如下: public static void resetKeyStore() { KeyStore keyStore; try { keyStore = KeyStore.getInstance("AndroidKeyStore"); keyStore.load(nul
public static void resetKeyStore() {
KeyStore keyStore;
try {
keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
ArrayList<String> toDelete = new ArrayList<>();
Enumeration<String> e = keyStore.aliases();
while(e.hasMoreElements()){
toDelete.add(e.nextElement());
}
for(String s : toDelete) {
keyStore.deleteEntry(s);
}
// keyStore.store(null);
} catch (KeyStoreException | IOException | NoSuchAlgorithmException | CertificateException e) {
Log.wtf(TAG, e);
}
}
非常感谢您的帮助Hi@Orion,您是否能够确定此问题的解决方案?我和你的处境一样。另外,您是否还记得您使用的设备出现此问题?对我来说,这段代码在Nexus5x上运行时似乎失败了,但如果我使用Nexus6p进行测试,它就可以工作。两款手机都运行6.0.1,所以我想知道是否有一些硬件差异可能会影响功能?看到相同的东西。在某些设备上,您可以删除别名,但通过
containsAlias()
检查表明删除无效(可能是因为需要保存存储)。在中没有提到它,但是调用store(null)
方法肯定会引发不支持操作异常。
E/AndroidRuntime: Caused by: java.lang.UnsupportedOperationException
E/AndroidRuntime: at java.security.KeyStoreSpi.engineStore(KeyStoreSpi.java:256)
E/AndroidRuntime: at java.security.KeyStore.store(KeyStore.java:565)
E/AndroidRuntime: at com.mycompany.myapp.LocalKeyStore.resetKeyStore(LocalKeyStore.java:235)