private void search(String query) {
   showDialog(Id.dialog.querying);
   mQueryType = Id.query.search;
   mQueryString = query;
   mAdapter.setKeys(new Vector<KeyInfo>());
   startThread();
 }
  @Override
  public void doneCallback(Message msg) {
    super.doneCallback(msg);

    removeDialog(Id.dialog.querying);

    Bundle data = msg.getData();
    String error = data.getString(Apg.EXTRA_ERROR);
    if (error != null) {
      Toast.makeText(this, getString(R.string.errorMessage, error), Toast.LENGTH_SHORT).show();
      return;
    }

    if (mQueryType == Id.query.search) {
      if (mSearchResult != null) {
        Toast.makeText(
                this, getString(R.string.keysFound, mSearchResult.size()), Toast.LENGTH_SHORT)
            .show();
        mAdapter.setKeys(mSearchResult);
      }
    } else if (mQueryType == Id.query.get) {
      Intent orgIntent = getIntent();
      if (Apg.Intent.LOOK_UP_KEY_ID_AND_RETURN.equals(orgIntent.getAction())) {
        if (mKeyData != null) {
          Intent intent = new Intent();
          intent.putExtra(Apg.EXTRA_TEXT, mKeyData);
          setResult(RESULT_OK, intent);
        } else {
          setResult(RESULT_CANCELED);
        }
        finish();
      } else {
        if (mKeyData != null) {
          Intent intent = new Intent(this, PublicKeyListActivity.class);
          intent.setAction(Apg.Intent.IMPORT);
          intent.putExtra(Apg.EXTRA_TEXT, mKeyData);
          startActivity(intent);
        }
      }
    }
  }