我如何等待活动完成才能继续?

时间:2016-11-02 16:42:03

标签: android android-asynctask certificate

如本帖所示:How to wait for an activity to finish in asynctask

我想等待我从服务启动的活动完成以便返回值。不幸的是,这篇文章没有答案:(我将解释我试图揭露我的问题的清晰看法:

我有这堂课:

public class CertificateConfigurationService {
    public boolean configureCertificate(Context context, CertificationConfiguration cert) {
             // ... code to create the certificate
             Intent intent = KeyChain.createInstallIntent();
             intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
             intent.putExtra(KeyChain.EXTRA_PKCS12, keystore);
             intent.putExtra(KeyChain.EXTRA_NAME, cert.getName());
             intent.putExtra(KeyChain.EXTRA_CERTIFICATE, credential.getName());
             context.startActivity(intent);
    }
}

问题是我有一个接收JSON有效负载的ConfigurationService,它可以包含多个要推送到手机的证书。

以下是与调用configure相关的ConfigurationService部分:

... if(payload != null && payload.length() > 0) {
            for (int i = 0; i < payload.length(); i++) {
                Configuration configuration;
                JSONObject currentObject = payload.getJSONObject(i);

                configuration = mapper.readValue(currentObject.toString(), Configuration.class);

                if (currentObject.getString("typeClass").equals("WLANConfiguration")) {
                    success = WifiConfigurationService.configureWifi(this.context, (WLANConfiguration) configuration);
                } else if (currentObject.getString("typeClass").equals("CertificateConfiguration")) {
                    success = CertificateConfigurationService.configureCertificate(this.context, (CertificateConfiguration) configuration);
                } ...

它适用于一个证书。 但它有2个或更多证书:

  1. ConfigurationService遍历两个
  2. 启动活动以键入第一个证书的密码 Password prompt
  3. 用户必须输入密码
  4. 因此忽略第二个证书,因为用户尚未完成。
  5. 我对Android异步任务不够敏锐,看看我如何等待用户确认密码,启动第二个证书的第二个活动。另外,当我这样做时,我还没有参加活动。

    如果您已经做过类似的事情,请告诉我要遵循的重要步骤吗?谢谢!

    编辑1: 我已经看到手机在安装证书时记录调试:

      

    CertInstaller:添加了凭证

    是否可以挂钩,并在之后恢复配置过程?

    编辑2: 我尝试将多个证书存储到一个密钥库中,然后为此密钥库创建一个InstallIntent,但它似乎仍尝试仅提取第一个。

0 个答案:

没有答案