如何防止android应用程序中的choosePrivateKeyAlias对话框?

2023-11-30

我有一个 Android 应用程序,可以在网络视图中调用安全网站。 webview 检索证书并将其提供给网站。

我必须使用KeyChain.choosePrivateKeyAlias(this, keyChainAliasCallback, null, null, null, -1, CERT_ALIAS);方法,这会显示一个像这样的对话框

certificate select

我只想在用户第一次使用该应用程序时显示此窗口,但我不知道是否可行。

我看到关于使用设备/所有者配置文件拦截此内容。这是否意味着它应该在 android 上工作?对我来说有点模糊。

另一个解决方案是将证书和私钥保存在任何其他应用程序或用户都无法访问的地方。我考虑私有模式下的 SharedPreferences。

我错了吗 ?

感谢您的回答 !


我不确定解决这个问题的最佳方法,但这就是我所做的,对我来说效果很好。

我在首选项中检查了一个布尔变量,如果它返回 false,我会显示choosePrivateKeyAlias窗户。如果返回 true,我就知道我有权直接检索证书,因此无需显示弹出窗口。

boolean isGranted = prefs.getBoolean("MY_CERT", false);
if(!isGranted) {
        //Get cert and private key from internal android store
        KeyChainAliasCallback keyChainAliasCallback = new KeyChainAliasCallback() {
            @Override
            public void alias(@Nullable String s) {
                Log.d(TAG, "selected alias = " + s);
                SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
                editor.putBoolean("MY_CERT", true);
                editor.commit();
                retriveCertsTask.execute();
            }
        };
        KeyChain.choosePrivateKeyAlias(mActivity, keyChainAliasCallback, null, null, null, -1, CERT_ALIAS);
    } else {
        // Retrieve certs an private key
        retriveCertsTask.execute();
    }
}

希望能帮助到你...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何防止android应用程序中的choosePrivateKeyAlias对话框? 的相关文章

随机推荐

  • 从java中的字符串中修剪换行符

    以下程序的输出 public class TestClass public static void main final String args String token null n token trim System out print
  • 通过服务器请求防止 Android 盗版

    我正在开发一个需要服务器来完成大部分繁重工作的应用程序 我想防止盗版客户端向该服务器发送请求 有没有办法在请求中发送一些标识符 以便我的服务器可以询问 Android Market 是否有人拥有该 id 确实购买了该应用程序 我该怎么做呢
  • 使用 WIF 和 jquery ajax 请求时 ASP.NET MVC 3 中的会话 Cookie 过期处理

    我的项目我正在使用WIFI 但这对于这个问题的上下文来说并不重要 您可以使用处理身份验证的替代框架 问题是关于执行 ajax 请求时处理身份验证失败的问题 尽管如此 就我而言 我编写了继承自的自定义服务器逻辑ClaimsAuthentica
  • 带有 Nodejs 本机模块的 AWS Lambda

    最近我开始使用 AWS Lambda 函数 我的 Nodejs 应用程序运行良好 直到我尝试使用web3 js包裹 添加行后 const Web3 require web3 我收到 HTTP 端点的 内部服务器错误 错误 并在 CloudW
  • Java 正则表达式 - 只包含一个空格的表达式

    我想将所有表达式与一个空格匹配 目前 我正在使用 s s s 不过 这似乎不是一个很好的方法 为什么不 很好 只是有点过于复杂 S s S
  • 在 XML 文件中搜索元素值

    在给定的 XML 文件中 我尝试使用以下命令搜索字符串是否存在XPath在爪哇 然而 即使字符串在那里 我的输出总是显示为 否 希望这里有人能指出我可能做错了什么 XML 文件
  • WIX 工具集包含多个文件

    我们有一个包含多个文件和文件夹的文件结构 我是 wix 工具集的新手 不太确定如何包含所有这些文件并保留目录结构 我知道 我可以添加这样的文件
  • 如何在MySQL中生成唯一的id?

    我正在使用 PHP 和 MySQL 编写脚本 我想要一个 唯一 id 由字符串组成 大写和小写 带数字的字母 例如 gHYtUUi5b 我发现 PHP 中有很多函数可以生成这样的数字 但我担心如何确保 id 是唯一的 UPDATE uuid
  • iOS (Cordova) 上出现键盘时如何调整 Web 视图大小

    在 Phonegap 3 7 0 上 当键盘出现在 iPhone 或 iPad 上时 Web 视图不会调整大小 并且键盘最终位于页脚上方 我希望缩小网络视图 以便页脚保持可见 有没有什么办法解决这一问题 我在这里看到了很多问题 实际上却达到
  • 事务应该在 .NET 还是 SQL Server 中处理?

    我进入了一个使用 NET C 作为前端 SQL Server 2008 作为后端的应用程序 我发现事务总是在 C 代码中处理 似乎这个项目有一条不成文的规则 我们不应该在存储过程中使用事务 我个人认为事务应该在存储过程中处理 因为它可以更好
  • 什么java设计模式可以避免强制转换数据实体

    我目前正在我的应用程序中实现类似异步的事件队列 它被设计为这样工作 一个组件对某些用户输入做出反应并将事件放入队列 另一个 侦听器 正在检查是否存在特定类型的事件在队列内部并运行它自己的业务逻辑 可以有各种事件类型 如 USER MOUSE
  • 如何将 Flutter 永久添加到 Mac 中的路径

    我知道有很多类似的答案 但是我已经检查过它们 观看了相关视频并尝试了无数次 我将 flutter 路径导出到 bashprofile 并按屏幕截图所示保存 但是如果我关闭终端并尝试使用 flutter 命令 例如flutter versio
  • C++ 中的“foreach”循环如何知道数组的长度

    我正在看下面的例子http www cplusplus com doc tutorial arrays 我不知道第二个 for 循环是如何工作的 for循环如何知道数组何时结束 如果它能弄清楚为什么第一个循环不使用类似的方法 我的印象是数组
  • 如何使用 codeigniter 将表单值插入 mysql 数据库[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我是 Codeigniter 的新手 如何使用 codeigniter 将表单值存储在
  • 将 JButton 图标向左对齐并保持文本居中

    我想设置一个 JButton 使其图标左侧对齐 而文本居中 我已经找到了如何让其中一个位于左侧 另一个位于右侧 或两者处于同一设置 但我找不到我要找的东西 当然我总是可以重新定义paint方法 但我正在寻找一种更精简的方法来做到这一点 您可
  • 将 get-content 放入 html 电子邮件的数组中

    html部分 html htm html text computername username text html out file c scripts temp Report html 我在 html 变量中有 html 语言 当我决定更
  • 使用 htaccess 进行移动重定向

    我有一个网站叫 www website org 我有一个移动网站 名为 m website org 我想使用 htaccess 自动将主网站 URL 重定向到移动版本 但是 移动版本上有一个链接指向主网站 称为 www website or
  • 数据框中行值的平均值,不包括 R 中的最小值和最大值

    我得到以下数据框 df 此处显示的片段 H2475 H2481 H2669 H2843 H2872 H2873 H2881 H2909 E1 94 470 26 481 15 120 18 490 16 189 11 422 14 886
  • 如何知道两个表情符号是否会显示为一个表情符号?

    表情符号 由2个unicodeScalars U 1F44D U 1F3FC组成 如何将其识别为 1 个 显示 表情符号 因为它将在 iOS 上如此显示 Swift 4 Xcode 9 更新 从 Swift 4 开始 表情符号序列 被视为单
  • 如何防止android应用程序中的choosePrivateKeyAlias对话框?

    我有一个 Android 应用程序 可以在网络视图中调用安全网站 webview 检索证书并将其提供给网站 我必须使用KeyChain choosePrivateKeyAlias this keyChainAliasCallback nul