avoid some null pointers when pgp api is not installed
This commit is contained in:
parent
c609eefefa
commit
69af009c88
|
@ -439,34 +439,32 @@ public class ConversationFragment extends Fragment {
|
|||
ConversationActivity activity = (ConversationActivity) getActivity();
|
||||
final XmppConnectionService xmppService = activity.xmppConnectionService;
|
||||
Contact contact = message.getConversation().getContact();
|
||||
if (contact.getPgpKeyId() != 0) {
|
||||
xmppService.sendMessage(message, null);
|
||||
chatMsg.setText("");
|
||||
} else {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
||||
builder.setTitle("No openPGP key found");
|
||||
builder.setIconAttribute(android.R.attr.alertDialogIcon);
|
||||
builder.setMessage("There is no openPGP key assoziated with this contact");
|
||||
builder.setNegativeButton("Cancel", null);
|
||||
builder.setPositiveButton("Send plain text",
|
||||
new DialogInterface.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
conversation.nextMessageEncryption = Message.ENCRYPTION_NONE;
|
||||
message.setEncryption(Message.ENCRYPTION_NONE);
|
||||
xmppService.sendMessage(message, null);
|
||||
chatMsg.setText("");
|
||||
}
|
||||
});
|
||||
builder.create().show();
|
||||
if (activity.hasPgp()) {
|
||||
if (contact.getPgpKeyId() != 0) {
|
||||
xmppService.sendMessage(message, null);
|
||||
chatMsg.setText("");
|
||||
} else {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
||||
builder.setTitle("No openPGP key found");
|
||||
builder.setIconAttribute(android.R.attr.alertDialogIcon);
|
||||
builder.setMessage("There is no openPGP key assoziated with this contact");
|
||||
builder.setNegativeButton("Cancel", null);
|
||||
builder.setPositiveButton("Send plain text",
|
||||
new DialogInterface.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
conversation.nextMessageEncryption = Message.ENCRYPTION_NONE;
|
||||
message.setEncryption(Message.ENCRYPTION_NONE);
|
||||
xmppService.sendMessage(message, null);
|
||||
chatMsg.setText("");
|
||||
}
|
||||
});
|
||||
builder.create().show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void resendPgpMessage(String msg) {
|
||||
this.queuedPqpMessage = msg;
|
||||
}
|
||||
|
||||
|
||||
protected void sendOtrMessage(final Message message) {
|
||||
ConversationActivity activity = (ConversationActivity) getActivity();
|
||||
final XmppConnectionService xmppService = activity.xmppConnectionService;
|
||||
|
|
|
@ -237,14 +237,16 @@ public class ManageAccountActivity extends XmppActivity implements ActionMode.Ca
|
|||
builder.setNegativeButton("Cancel",null);
|
||||
builder.create().show();
|
||||
} else if (item.getItemId()==R.id.announce_pgp) {
|
||||
mode.finish();
|
||||
try {
|
||||
xmppConnectionService.generatePgpAnnouncement(selectedAccountForActionMode);
|
||||
} catch (PgpEngine.UserInputRequiredException e) {
|
||||
if (this.hasPgp()) {
|
||||
mode.finish();
|
||||
try {
|
||||
startIntentSenderForResult(e.getPendingIntent().getIntentSender(), REQUEST_ANNOUNCE_PGP, null, 0, 0, 0);
|
||||
} catch (SendIntentException e1) {
|
||||
Log.d("gultsch","sending intent failed");
|
||||
xmppConnectionService.generatePgpAnnouncement(selectedAccountForActionMode);
|
||||
} catch (PgpEngine.UserInputRequiredException e) {
|
||||
try {
|
||||
startIntentSenderForResult(e.getPendingIntent().getIntentSender(), REQUEST_ANNOUNCE_PGP, null, 0, 0, 0);
|
||||
} catch (SendIntentException e1) {
|
||||
Log.d("gultsch","sending intent failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,8 @@ package eu.siacs.conversations.ui;
|
|||
import eu.siacs.conversations.services.XmppConnectionService;
|
||||
import eu.siacs.conversations.services.XmppConnectionService.XmppConnectionBinder;
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.AlertDialog.Builder;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
@ -63,5 +65,18 @@ public abstract class XmppActivity extends Activity {
|
|||
}
|
||||
}
|
||||
|
||||
public boolean hasPgp() {
|
||||
if (xmppConnectionService.getPgpEngine()!=null) {
|
||||
return true;
|
||||
} else {
|
||||
Builder builder = new AlertDialog.Builder(getApplicationContext());
|
||||
builder.setTitle("OpenKeychain not found");
|
||||
builder.setIconAttribute(android.R.attr.alertDialogIcon);
|
||||
builder.setMessage("Please make sure you have installed OpenKeychain");
|
||||
builder.create().show();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
abstract void onBackendConnected();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue