Replying to a phone call with a SMS potentially exposes sensitive/personally identifying information
Bug 7319876
When ComposeMessageActivity is in the mode where it can send a message
from the lock screen, hide the conversation list and don't show any
menus (previously, the user could delete the conversation from the
menu).
Change-Id: Ieec8fdddd794717917aa4d37729478c81f8c6d02
diff --git a/src/com/android/mms/ui/ComposeMessageActivity.java b/src/com/android/mms/ui/ComposeMessageActivity.java
index 020a0e6..720347c 100644
--- a/src/com/android/mms/ui/ComposeMessageActivity.java
+++ b/src/com/android/mms/ui/ComposeMessageActivity.java
@@ -256,8 +256,9 @@
private Conversation mConversation; // Conversation we are working in
- private boolean mExitOnSent; // Should we finish() after sending a message?
- // TODO: mExitOnSent is obsolete -- remove
+ // When mSendDiscreetMode is true, this activity only allows a user to type in and send
+ // a single sms, send the message, and then exits. The message history and menus are hidden.
+ private boolean mSendDiscreetMode;
private View mTopPanel; // View containing the recipient and subject editors
private View mBottomPanel; // View containing the text editor, send button, ec.
@@ -2175,7 +2176,7 @@
* @param debugFlag shows where this is being called from
*/
private void loadMessagesAndDraft(int debugFlag) {
- if (!mMessagesAndDraftLoaded) {
+ if (!mSendDiscreetMode && !mMessagesAndDraftLoaded) {
if (Log.isLoggable(LogTag.APP, Log.VERBOSE)) {
Log.v(TAG, "### CMA.loadMessagesAndDraft: flag=" + debugFlag);
}
@@ -2217,8 +2218,8 @@
mWorkingMessage.writeStateToBundle(outState);
- if (mExitOnSent) {
- outState.putBoolean("exit_on_sent", mExitOnSent);
+ if (mSendDiscreetMode) {
+ outState.putBoolean("exit_on_sent", mSendDiscreetMode);
}
}
@@ -2610,6 +2611,12 @@
menu.clear();
+ if (mSendDiscreetMode) {
+ // When we're in send-a-single-message mode from the lock screen, don't show
+ // any menus.
+ return true;
+ }
+
if (isRecipientCallable()) {
MenuItem item = menu.add(0, MENU_CALL_RECIPIENT, 0, R.string.menu_call)
.setIcon(R.drawable.ic_menu_call)
@@ -3543,6 +3550,9 @@
}
private void startMsgListQuery(int token) {
+ if (mSendDiscreetMode) {
+ return;
+ }
Uri conversationUri = mConversation.getUri();
if (conversationUri == null) {
@@ -3587,7 +3597,7 @@
mMsgListAdapter.setMsgListItemHandler(mMessageListItemHandler);
mMsgListView.setAdapter(mMsgListAdapter);
mMsgListView.setItemsCanFocus(false);
- mMsgListView.setVisibility(View.VISIBLE);
+ mMsgListView.setVisibility(mSendDiscreetMode ? View.INVISIBLE : View.VISIBLE);
mMsgListView.setOnCreateContextMenuListener(mMsgListMenuCreateListener);
mMsgListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
@@ -3731,7 +3741,7 @@
mScrollOnSend = true; // in the next onQueryComplete, scroll the list to the end.
}
// But bail out if we are supposed to exit after the message is sent.
- if (mExitOnSent) {
+ if (mSendDiscreetMode) {
finish();
}
}
@@ -3838,7 +3848,10 @@
ContactList.getByNumbers(recipients,
false /* don't block */, true /* replace number */), false);
addRecipientsListeners();
- mExitOnSent = bundle.getBoolean("exit_on_sent", false);
+ mSendDiscreetMode = bundle.getBoolean("exit_on_sent", false);
+ if (mSendDiscreetMode) {
+ mMsgListView.setVisibility(View.INVISIBLE);
+ }
mWorkingMessage.readStateFromBundle(bundle);
return;
@@ -3872,7 +3885,10 @@
addRecipientsListeners();
updateThreadIdIfRunning();
- mExitOnSent = intent.getBooleanExtra("exit_on_sent", false);
+ mSendDiscreetMode = intent.getBooleanExtra("exit_on_sent", false);
+ if (mSendDiscreetMode) {
+ mMsgListView.setVisibility(View.INVISIBLE);
+ }
if (intent.hasExtra("sms_body")) {
mWorkingMessage.setText(intent.getStringExtra("sms_body"));
}