Android KeyChain.createInstallIntent 立即返回

标签 android android-intent android-4.4-kitkat

在我的 Android 应用程序中,我尝试安装从我的服务器检索的 PKCS12 文件(证书和私钥)。为此,我使用 KeyChain.createInstallIntent()。我传入要用作 Extras 的文件和名称,然后使用 startActivityForResult 来触发该 Activity 。

这在我运行 4.1.1 Jelly Bean 的 Galaxy Tab 2 上运行良好,打开系统对话框以按预期安装证书。但是,在运行 4.4.2 KitKat 的 Galaxy Tab 3 上,会立即调用 onActivityResult 方法,结果代码为 RESULT_CANCELLED

我想要完成的是让应用程序收到证书安装成功/失败的通知,然后打开浏览器窗口并相应地转到成功或失败页面。

protected void importPkcs12(byte[] pkcs12, String defaultName)
{
    Intent installIntent = KeyChain.createInstallIntent();
    installIntent.putExtra(KeyChain.EXTRA_PKCS12, pkcs12);
    installIntent.putExtra(KeyChain.EXTRA_NAME, defaultName);
    startActivityForResult(installIntent, INSTALL_KEYSTORE_CODE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{
    logger.debug("onActivityResult called with requestCode {}", requestCode);

    switch(requestCode)
    {
        case INSTALL_KEYSTORE_CODE:
        {           
            if(resultCode == RESULT_OK)
            {
               // Go to success web page
            }
            else //RESULT_CANCELED
            {
                // Go to canceled/failure web page  
            }
            break;
        }
    }

    super.onActivityResult(requestCode, resultCode, data);
}

最佳答案

有一张票:https://code.google.com/p/android/issues/detail?id=158411 .

作为一种解决方法,您可以使用带有 keystore-changed 事件的 BroadcastReceiver 在用户实际安装证书时获取通知,但这显然做了很多假设,而且它还不允许您捕获实际的情况取消事件。

关于Android KeyChain.createInstallIntent 立即返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26428386/

相关文章:

android - FCM 后台通知深度链接不适用于 android

android - android studio的HierarchyViewer工具如何知道android屏幕 View 的属性

android - 如何删除 KitKat 的 ActionBar 阴影?

android - Android如何确定应用程序是否在 "High Battery Use"下有 "Recent Location Requests"?

android - 下载文件到自定义目录

java - 在 Robolectric 测试中使用 Android KeyStore

java - 从 JSON 响应中获取一半数据

android - 如何在另一个 Activity 发送的 Activity 中获取并显示 EXTRA_TEXT?

android - 如何在 android 中启动股票安装程序应用程序

android - Kamailio 和安卓 SIP