有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android API 16级如何安全地存储首选项?

目前,我正在我的开源应用程序中使用DefaultSharedPreferences。现在我知道在DefaultSharedPreferences中存储api密钥/密码是个坏主意,因为敏感数据以纯文本形式存储

我想使用许多安全解决方案中的一种,比如EncryptedSharedPreferences,但所有这些解决方案的问题是它们不支持API级别16

有人知道如何在Android Api级别16及更高级别上以更安全的方式实现这一点的解决方案或教程吗

下面是我当前解决方案(不安全)的相关代码部分

// [...]
public class MainFragment { // [...]
    // [...]
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // [...]
        MainActivity.setApiKey(PreferenceManager.getDefaultSharedPreferences(requireActivity())
           .getString("api_key_preference", ""));
        // [...]
    }
// [...]
}
// [...]
public class SettingsFragment extends PreferenceFragmentCompat {
    @Override
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
        setPreferencesFromResource(R.xml.root_preferences, rootKey);
    }
}
<PreferenceScreen>
<!-- [...] -->
    <EditTextPreference
        安卓:icon="@drawable/ic_baseline_vpn_key_24"
        安卓:key="api_key_preference"
        安卓:selectAllOnFocus="true"
        安卓:singleLine="true"
        安卓:title="API Key" />
<!-- [...] -->

共 (0) 个答案