使用密钥库 android。针对版本 18 及更高版本。必须使用已弃用的方法调用?

using keystore android. targeting version 18 and above. have to use deprecated method calls?

我正在开发一个应用程序,使用 Android KeyStore API 调用来加密一些字符串值。我的目标是 API 18 级及以上。我的代码中有一个 if else 块,目标是 API 级别 18 到 23。我的问题是我要么必须在块中使用已弃用的方法调用(如下所示是我的 if 块)

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2 &&
            Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {

       KeyPairGenerator kpg = KeyPairGenerator.getInstance(
        KeyProperties.KEY_ALGORITHM_EC, "AndroidKeyStore");

       kpg.initialize(new KeyPairGeneratorSpec.Builder(alias, keyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY)
       .setDigests(KeyProperties.DIGEST_SHA256,KeyProperties.DIGEST_SHA512)
       .build());

       KeyPair kp = kpg.generateKeyPair();
     }

这在 IDE 中显示为带有一条线,因为该方法调用已弃用。但是,它确实针对 api 级别构建此代码 运行 on?

如果我切换到 KeyGenParameterSpec.builder(),我会得到一个编译时错误,因为这个对象只能在 API 级别 23 及以上使用。我的应用面向 API 级别 18 及以上?

有没有办法在我的 KeyStore 中生成密钥对条目,而无需使用已弃用的方法调用或不必移动到 API 级别 23 及更高级别?

提前致谢!

只需在新的 API 级别 23 代码中包含一个 else 块,这样您就可以双管齐下!

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2 &&
            Build.VERSION.SDK_INT < Build.VERSION_CODES.M){
    // deprecated code on 23
}else{
    // new code for 23+
}