mirror of
https://github.com/oxen-io/session-android.git
synced 2025-10-26 03:11:36 +00:00
Support for dual-sim SMS/MMS functionality
Allow source selection for sending SMS/MMS, and display the SIM that received SMS/MMS. Fixes #555 Closes #5199 // FREEBIE
This commit is contained in:
@@ -63,9 +63,11 @@ public class MmsListener extends BroadcastReceiver {
|
||||
isRelevant(context, intent)))
|
||||
{
|
||||
Log.w(TAG, "Relevant!");
|
||||
int subscriptionId = intent.getExtras().getInt("subscription", -1);
|
||||
|
||||
ApplicationContext.getInstance(context)
|
||||
.getJobManager()
|
||||
.add(new MmsReceiveJob(context, intent.getByteArrayExtra("data")));
|
||||
.add(new MmsReceiveJob(context, intent.getByteArrayExtra("data"), subscriptionId));
|
||||
|
||||
abortBroadcast();
|
||||
}
|
||||
|
||||
@@ -9,6 +9,8 @@ import android.widget.Toast;
|
||||
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.crypto.MasterSecret;
|
||||
import org.thoughtcrime.securesms.database.DatabaseFactory;
|
||||
import org.thoughtcrime.securesms.database.RecipientPreferenceDatabase.RecipientsPreferences;
|
||||
import org.thoughtcrime.securesms.database.ThreadDatabase;
|
||||
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
|
||||
import org.thoughtcrime.securesms.mms.SlideDeck;
|
||||
@@ -17,6 +19,7 @@ import org.thoughtcrime.securesms.recipients.Recipients;
|
||||
import org.thoughtcrime.securesms.sms.MessageSender;
|
||||
import org.thoughtcrime.securesms.sms.OutgoingTextMessage;
|
||||
import org.thoughtcrime.securesms.util.Rfc5724Uri;
|
||||
import org.whispersystems.libaxolotl.util.guava.Optional;
|
||||
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.URLDecoder;
|
||||
@@ -49,14 +52,17 @@ public class QuickResponseService extends MasterSecretIntentService {
|
||||
if(numbers.contains("%")){
|
||||
numbers = URLDecoder.decode(numbers);
|
||||
}
|
||||
Recipients recipients = RecipientFactory.getRecipientsFromString(this, numbers, false);
|
||||
|
||||
Recipients recipients = RecipientFactory.getRecipientsFromString(this, numbers, false);
|
||||
Optional<RecipientsPreferences> preferences = DatabaseFactory.getRecipientPreferenceDatabase(this).getRecipientsPreferences(recipients.getIds());
|
||||
int subscriptionId = preferences.isPresent() ? preferences.get().getDefaultSubscriptionId().or(-1) : -1;
|
||||
|
||||
if (!TextUtils.isEmpty(content)) {
|
||||
if (recipients.isSingleRecipient()) {
|
||||
MessageSender.send(this, masterSecret, new OutgoingTextMessage(recipients, content), -1, false);
|
||||
MessageSender.send(this, masterSecret, new OutgoingTextMessage(recipients, content, subscriptionId), -1, false);
|
||||
} else {
|
||||
MessageSender.send(this, masterSecret, new OutgoingMediaMessage(recipients, new SlideDeck(), content, System.currentTimeMillis(),
|
||||
ThreadDatabase.DistributionTypes.DEFAULT), -1, false);
|
||||
subscriptionId, ThreadDatabase.DistributionTypes.DEFAULT), -1, false);
|
||||
}
|
||||
}
|
||||
} catch (URISyntaxException e) {
|
||||
|
||||
@@ -84,16 +84,6 @@ public class SmsListener extends BroadcastReceiver {
|
||||
return bodyBuilder.toString();
|
||||
}
|
||||
|
||||
// private ArrayList<IncomingTextMessage> getAsTextMessages(Intent intent) {
|
||||
// Object[] pdus = (Object[])intent.getExtras().get("pdus");
|
||||
// ArrayList<IncomingTextMessage> messages = new ArrayList<IncomingTextMessage>(pdus.length);
|
||||
//
|
||||
// for (int i=0;i<pdus.length;i++)
|
||||
// messages.add(new IncomingTextMessage(SmsMessage.createFromPdu((byte[])pdus[i])));
|
||||
//
|
||||
// return messages;
|
||||
// }
|
||||
|
||||
private boolean isRelevant(Context context, Intent intent) {
|
||||
SmsMessage message = getSmsMessageFromIntent(intent);
|
||||
String messageBody = getSmsMessageBodyFromIntent(intent);
|
||||
@@ -164,14 +154,10 @@ public class SmsListener extends BroadcastReceiver {
|
||||
} else if ((intent.getAction().equals(SMS_DELIVERED_ACTION)) ||
|
||||
(intent.getAction().equals(SMS_RECEIVED_ACTION)) && isRelevant(context, intent))
|
||||
{
|
||||
Object[] pdus = (Object[])intent.getExtras().get("pdus");
|
||||
ApplicationContext.getInstance(context).getJobManager().add(new SmsReceiveJob(context, pdus));
|
||||
Object[] pdus = (Object[]) intent.getExtras().get("pdus");
|
||||
int subscriptionId = intent.getExtras().getInt("subscription", -1);
|
||||
|
||||
// Intent receivedIntent = new Intent(context, SendReceiveService.class);
|
||||
// receivedIntent.setAction(SendReceiveService.RECEIVE_SMS_ACTION);
|
||||
// receivedIntent.putExtra("ResultCode", this.getResultCode());
|
||||
// receivedIntent.putParcelableArrayListExtra("text_messages",getAsTextMessages(intent));
|
||||
// context.startService(receivedIntent);
|
||||
ApplicationContext.getInstance(context).getJobManager().add(new SmsReceiveJob(context, pdus, subscriptionId));
|
||||
|
||||
abortBroadcast();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user