fixed problem with null messages. added ask again button
This commit is contained in:
parent
71cb5548eb
commit
4e20b81bd9
|
@ -95,6 +95,18 @@
|
||||||
android:text="Receive presence updates"
|
android:text="Receive presence updates"
|
||||||
android:textSize="18sp"
|
android:textSize="18sp"
|
||||||
android:textColor="#5b5b5b" />
|
android:textColor="#5b5b5b" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/ask_again"
|
||||||
|
android:paddingTop="8dp"
|
||||||
|
android:paddingLeft="32dp"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/ask_again"
|
||||||
|
android:textColor="#33B5E5"
|
||||||
|
android:textSize="18sp"
|
||||||
|
android:visibility="gone"
|
||||||
|
/>
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/sectionHeader"
|
style="@style/sectionHeader"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|
|
@ -26,4 +26,5 @@
|
||||||
<string name="account_info">Server Info</string>
|
<string name="account_info">Server Info</string>
|
||||||
<string name="register_account">Register new account on server</string>
|
<string name="register_account">Register new account on server</string>
|
||||||
<string name="share_with">Share with</string>
|
<string name="share_with">Share with</string>
|
||||||
|
<string name="ask_again"><u>Click to ask again</u></string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -45,6 +45,7 @@ public class Account extends AbstractEntity{
|
||||||
public static final int STATUS_REGISTRATION_FAILED = 7;
|
public static final int STATUS_REGISTRATION_FAILED = 7;
|
||||||
public static final int STATUS_REGISTRATION_CONFLICT = 8;
|
public static final int STATUS_REGISTRATION_CONFLICT = 8;
|
||||||
public static final int STATUS_REGISTRATION_SUCCESSFULL = 9;
|
public static final int STATUS_REGISTRATION_SUCCESSFULL = 9;
|
||||||
|
public static final int STATUS_REGISTRATION_NOT_SUPPORTED = 10;
|
||||||
|
|
||||||
protected String username;
|
protected String username;
|
||||||
protected String server;
|
protected String server;
|
||||||
|
|
|
@ -150,7 +150,7 @@ public class XmppConnectionService extends Service {
|
||||||
} else {
|
} else {
|
||||||
// Log.d(LOGTAG, "unparsed message " + packet.toString());
|
// Log.d(LOGTAG, "unparsed message " + packet.toString());
|
||||||
}
|
}
|
||||||
if (message == null) {
|
if ((message == null)||(message.getBody() == null)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (packet.hasChild("delay")) {
|
if (packet.hasChild("delay")) {
|
||||||
|
|
|
@ -42,6 +42,7 @@ public class ContactDetailsActivity extends XmppActivity {
|
||||||
private TextView contactJid;
|
private TextView contactJid;
|
||||||
private TextView accountJid;
|
private TextView accountJid;
|
||||||
private TextView status;
|
private TextView status;
|
||||||
|
private TextView askAgain;
|
||||||
private CheckBox send;
|
private CheckBox send;
|
||||||
private CheckBox receive;
|
private CheckBox receive;
|
||||||
private QuickContactBadge badge;
|
private QuickContactBadge badge;
|
||||||
|
@ -107,6 +108,7 @@ public class ContactDetailsActivity extends XmppActivity {
|
||||||
status = (TextView) findViewById(R.id.details_contactstatus);
|
status = (TextView) findViewById(R.id.details_contactstatus);
|
||||||
send = (CheckBox) findViewById(R.id.details_send_presence);
|
send = (CheckBox) findViewById(R.id.details_send_presence);
|
||||||
receive = (CheckBox) findViewById(R.id.details_receive_presence);
|
receive = (CheckBox) findViewById(R.id.details_receive_presence);
|
||||||
|
askAgain = (TextView) findViewById(R.id.ask_again);
|
||||||
badge = (QuickContactBadge) findViewById(R.id.details_contact_badge);
|
badge = (QuickContactBadge) findViewById(R.id.details_contact_badge);
|
||||||
keys = (LinearLayout) findViewById(R.id.details_contact_keys);
|
keys = (LinearLayout) findViewById(R.id.details_contact_keys);
|
||||||
getActionBar().setHomeButtonEnabled(true);
|
getActionBar().setHomeButtonEnabled(true);
|
||||||
|
@ -177,7 +179,17 @@ public class ContactDetailsActivity extends XmppActivity {
|
||||||
if (contact.getSubscriptionOption(Contact.Subscription.TO)) {
|
if (contact.getSubscriptionOption(Contact.Subscription.TO)) {
|
||||||
receive.setChecked(true);
|
receive.setChecked(true);
|
||||||
} else {
|
} else {
|
||||||
receive.setText("Request presence updates");
|
receive.setText("Ask for presence updates");
|
||||||
|
askAgain.setVisibility(View.VISIBLE);
|
||||||
|
askAgain.setOnClickListener(new OnClickListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
Toast.makeText(getApplicationContext(), "Asked for presence updates",Toast.LENGTH_SHORT).show();
|
||||||
|
xmppConnectionService.requestPresenceUpdatesFrom(contact);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
if (contact.getSubscriptionOption(Contact.Subscription.ASKING)) {
|
if (contact.getSubscriptionOption(Contact.Subscription.ASKING)) {
|
||||||
receive.setChecked(true);
|
receive.setChecked(true);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -175,6 +175,10 @@ public class ManageAccountActivity extends XmppActivity {
|
||||||
statusView.setText("registration completed");
|
statusView.setText("registration completed");
|
||||||
statusView.setTextColor(0xFF83b600);
|
statusView.setTextColor(0xFF83b600);
|
||||||
break;
|
break;
|
||||||
|
case Account.STATUS_REGISTRATION_NOT_SUPPORTED:
|
||||||
|
statusView.setText("server does not support registration");
|
||||||
|
statusView.setTextColor(0xFFe92727);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
statusView.setText("");
|
statusView.setText("");
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -218,7 +218,7 @@ public class UIHelper {
|
||||||
mBuilder.setSmallIcon(R.drawable.notification);
|
mBuilder.setSmallIcon(R.drawable.notification);
|
||||||
if (notify) {
|
if (notify) {
|
||||||
if (vibrate) {
|
if (vibrate) {
|
||||||
int dat = 110;
|
int dat = 70;
|
||||||
long[] pattern = {0,3*dat,dat,dat,dat,3*dat,dat,dat};
|
long[] pattern = {0,3*dat,dat,dat,dat,3*dat,dat,dat};
|
||||||
mBuilder.setVibrate(pattern);
|
mBuilder.setVibrate(pattern);
|
||||||
}
|
}
|
||||||
|
|
|
@ -441,42 +441,11 @@ public class XmppConnection implements Runnable {
|
||||||
&& account.isOptionSet(Account.OPTION_USETLS)) {
|
&& account.isOptionSet(Account.OPTION_USETLS)) {
|
||||||
sendStartTLS();
|
sendStartTLS();
|
||||||
} else if (this.streamFeatures.hasChild("register")&&(account.isOptionSet(Account.OPTION_REGISTER))) {
|
} else if (this.streamFeatures.hasChild("register")&&(account.isOptionSet(Account.OPTION_REGISTER))) {
|
||||||
IqPacket register = new IqPacket(IqPacket.TYPE_GET);
|
sendRegistryRequest();
|
||||||
register.query("jabber:iq:register");
|
} else if (!this.streamFeatures.hasChild("register")&&(account.isOptionSet(Account.OPTION_REGISTER))) {
|
||||||
register.setTo(account.getServer());
|
//Log.d(LOGTAG,"registration not supported. stream features where"+this.streamFeatures.toString());
|
||||||
sendIqPacket(register, new OnIqPacketReceived() {
|
changeStatus(Account.STATUS_REGISTRATION_NOT_SUPPORTED);
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onIqPacketReceived(Account account, IqPacket packet) {
|
|
||||||
Element instructions = packet.query().findChild("instructions");
|
|
||||||
if (packet.query().hasChild("username")&&(packet.query().hasChild("password"))) {
|
|
||||||
IqPacket register = new IqPacket(IqPacket.TYPE_SET);
|
|
||||||
Element username = new Element("username").setContent(account.getUsername());
|
|
||||||
Element password = new Element("password").setContent(account.getPassword());
|
|
||||||
register.query("jabber:iq:register").addChild(username).addChild(password);
|
|
||||||
sendIqPacket(register, new OnIqPacketReceived() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onIqPacketReceived(Account account, IqPacket packet) {
|
|
||||||
if (packet.getType()==IqPacket.TYPE_RESULT) {
|
|
||||||
account.setOption(Account.OPTION_REGISTER, false);
|
|
||||||
changeStatus(Account.STATUS_REGISTRATION_SUCCESSFULL);
|
|
||||||
Log.d(LOGTAG,"successfull");
|
|
||||||
} else if (packet.hasChild("error")&&(packet.findChild("error").hasChild("conflict"))){
|
|
||||||
changeStatus(Account.STATUS_REGISTRATION_CONFLICT);
|
|
||||||
} else {
|
|
||||||
changeStatus(Account.STATUS_REGISTRATION_FAILED);
|
|
||||||
Log.d(LOGTAG,packet.toString());
|
|
||||||
}
|
|
||||||
disconnect(true);
|
disconnect(true);
|
||||||
}
|
|
||||||
});
|
|
||||||
Log.d(LOGTAG,"registering: "+register.toString());
|
|
||||||
} else {
|
|
||||||
Log.d(LOGTAG,account.getJid()+": could not register. instructions are"+instructions.getContent());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else if (this.streamFeatures.hasChild("mechanisms")
|
} else if (this.streamFeatures.hasChild("mechanisms")
|
||||||
&& shouldAuthenticate) {
|
&& shouldAuthenticate) {
|
||||||
sendSaslAuth();
|
sendSaslAuth();
|
||||||
|
@ -499,6 +468,45 @@ public class XmppConnection implements Runnable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void sendRegistryRequest() {
|
||||||
|
IqPacket register = new IqPacket(IqPacket.TYPE_GET);
|
||||||
|
register.query("jabber:iq:register");
|
||||||
|
register.setTo(account.getServer());
|
||||||
|
sendIqPacket(register, new OnIqPacketReceived() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onIqPacketReceived(Account account, IqPacket packet) {
|
||||||
|
Element instructions = packet.query().findChild("instructions");
|
||||||
|
if (packet.query().hasChild("username")&&(packet.query().hasChild("password"))) {
|
||||||
|
IqPacket register = new IqPacket(IqPacket.TYPE_SET);
|
||||||
|
Element username = new Element("username").setContent(account.getUsername());
|
||||||
|
Element password = new Element("password").setContent(account.getPassword());
|
||||||
|
register.query("jabber:iq:register").addChild(username).addChild(password);
|
||||||
|
sendIqPacket(register, new OnIqPacketReceived() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onIqPacketReceived(Account account, IqPacket packet) {
|
||||||
|
if (packet.getType()==IqPacket.TYPE_RESULT) {
|
||||||
|
account.setOption(Account.OPTION_REGISTER, false);
|
||||||
|
changeStatus(Account.STATUS_REGISTRATION_SUCCESSFULL);
|
||||||
|
} else if (packet.hasChild("error")&&(packet.findChild("error").hasChild("conflict"))){
|
||||||
|
changeStatus(Account.STATUS_REGISTRATION_CONFLICT);
|
||||||
|
} else {
|
||||||
|
changeStatus(Account.STATUS_REGISTRATION_FAILED);
|
||||||
|
Log.d(LOGTAG,packet.toString());
|
||||||
|
}
|
||||||
|
disconnect(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
changeStatus(Account.STATUS_REGISTRATION_FAILED);
|
||||||
|
disconnect(true);
|
||||||
|
Log.d(LOGTAG,account.getJid()+": could not register. instructions are"+instructions.getContent());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private void sendInitialPresence() {
|
private void sendInitialPresence() {
|
||||||
PresencePacket packet = new PresencePacket();
|
PresencePacket packet = new PresencePacket();
|
||||||
packet.setAttribute("from", account.getFullJid());
|
packet.setAttribute("from", account.getFullJid());
|
||||||
|
|
Loading…
Reference in a new issue