Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法从密钥库中删除别名-KeyStore.store抛出UnsupportedOperationException_Java_Android - Fatal编程技术网

Java 无法从密钥库中删除别名-KeyStore.store抛出UnsupportedOperationException

Java 无法从密钥库中删除别名-KeyStore.store抛出UnsupportedOperationException,java,android,Java,Android,我也有同样的问题。这个问题的解决方案是“调用密钥库上的.store()方法来刷新更改”,这似乎很好 我的问题是,我正在使用AndroidKeyStore,它似乎不支持该操作。我的代码如下: public static void resetKeyStore() { KeyStore keyStore; try { keyStore = KeyStore.getInstance("AndroidKeyStore"); keyStore.load(nul

我也有同样的问题。这个问题的解决方案是“调用密钥库上的.store()方法来刷新更改”,这似乎很好

我的问题是,我正在使用AndroidKeyStore,它似乎不支持该操作。我的代码如下:

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)