예제 #1
0
  @Override
  public void onCreate(Bundle savedInstanceState) {
    context = getApplicationContext();
    this.connection = Conexion.getInstance();
    this.roster = RosterManager.getRosterInstance();
    chatMan = ContactsActivity.chatMan;
    chat = chatMan.chat;
    super.onCreate(savedInstanceState);
    setContentView(R.layout.chat);
    destJid = getIntent().getStringExtra("destJid");
    myJid = this.connection.getUser();
    cipher = RosterManager.isSecure(destJid);
    Bundle bundle = getIntent().getExtras();
    passPhrase = bundle.getString(AndroidRsaConstants.PASSPHRASE);

    String parsedDest = StringUtils.parseBareAddress(destJid);
    Log.d(TAG, "Creado chat con " + roster.getEntry(parsedDest).getName() + " cifrado=" + cipher);

    if (chat == null) {
      chatMan.createChat(destJid, messageListener);
      chat = chatMan.getChat();
      if (cipher) {
        Message m = new Message(destJid);
        try {
          chat.sendMessage(m);
        } catch (XMPPException e) {
          e.printStackTrace();
        }
      }
    } else {
      chat.addMessageListener(messageListener);
    }

    adapter = new ChatAdapter(this, listMessages);
    setListAdapter(adapter);
    myListView = getListView();
    myListView.setDivider(null);

    if (cipher) {
      Bitmap bm = AvatarsCache.getAvatar(destJid);
      try {
        cert = Decode.decode(bm);
      } catch (IOException e) {
        e.printStackTrace();
      } catch (CertificateException e) {
        e.printStackTrace();
      }
    }
  }
예제 #2
0
  public void send(View view) {
    Message message = new Message(destJid);
    EditText editText = (EditText) findViewById(R.id.textInput);
    String plainText = editText.getText().toString();
    editText.setText("");

    message.setFrom(myJid);
    message.setTo(destJid);

    Message m = new Message();
    m.setFrom(myJid);
    m.setBody(plainText);
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
    m.setSubject(sdf.format(new Date()));
    listMessages.add(m);
    refreshAdapter();
    myListView.smoothScrollToPosition(adapter.getCount() - 1);

    if (!cipher) {
      try {
        message.setBody(plainText);
        chatMan.getChat().sendMessage(message);
        Log.d(TAG, "Enviando: " + message.getBody());

      } catch (XMPPException e) {
        Log.d(TAG, "ERROR al enviar mensaje");
      }
    } else {
      try {
        String encodedMessage = RSA.cipher(plainText, cert.getPublicKey());
        message.setBody(encodedMessage);
        chatMan.getChat().sendMessage(message);
        Log.d(TAG, "Enviando cifrado: " + message.getBody() + " " + plainText);

      } catch (Exception e) {
        Log.d(TAG, "PETO ENVIANDO CIFRADOOOO");
        e.printStackTrace();
      }
    }
  }
예제 #3
0
 @Override
 public void onBackPressed() {
   chatMan.chat = null;
   chat = null;
   super.onBackPressed();
 }