1

Now that Hangouts for Android is dropping SMS support, those of us who use Google Voice as our default number are in a conundrum. The official Google Voice app doesn't support being the "Default" for messaging (as in, clicking send a message from a contact screen or missed call), and none of the messaging apps (stock or third party) support Google Voice. Hangouts, love it or hate it, was our lifeline as it did both. But no longer.

Digging up some info on this has revealed that the Voice app can't be set as default because Android requires the carrier SMS/MMS handlers to be present in the app in order to have that option. No support for carrier, no option for default. I'm wondering- is it crazy to write a small app that would include the requisite handlers that sort of routes intent requests to different apps? For example, allow new message requests to open in an app of your choosing, Hangouts or Google Voice, etc. Heck, even Whatsapp if you so wish. But, if this forwarding app doesn't also actually DO anything with carrier messages, what will happen when/if a carrier SMS/MMS comes in? Will the message get stuck in limbo trying to be delivered somewhere? I'm not clear on how the OS handles that. I see that whatever app is set to default for messaging is the one in charge of receiving and storing messages. So, if I don't include some sort of actual carrier message handling, how might that effect the operation of the phone? Or, is it possible to forward along incoming carrier messages to another app (such as the standard Messenger) from this forwarding app? I can't seem to figure out how this should work, open to suggestions!

Gilden
  • 11
  • 2
  • 1
    Short answer: no, you can't really do that. If the app chosen as the default does not handle something for which it is responsible, then it just won't happen. There is no "limbo"; messages will just be lost. You can't hand off functionalities that you don't cover, for a couple of reasons. Though there is no requirement that messages be stored in the standard Providers, the default is the only one that has write access to them, so either way, other apps won't be able to read or write any of those messages. – Mike M. May 22 '17 at 07:26
  • 1
    Furthermore, when an app is not the default, it's expected to basically disable any kind of regular message handling, apart from maybe viewing whatever stored messages it can read. – Mike M. May 22 '17 at 07:26
  • Thanks Mike, that's what I figured. But, the forwarding of intent for new messages would still work, correct? IE, if I wanted the app to forward new message composition to a third party like Hangouts or Voice, that should be relatively straight forward? I guess in my case it would make sense to just have a very basic SMS/MMS handling app with the option to forward outgoing message requests. That way if my carrier sends me a notification, I'll still get it and it can be stored somewhere but otherwise all new messages will come from the app I choose. Does that sound about right? – Gilden May 25 '17 at 19:06
  • 1
    "But, the forwarding of intent for new messages would still work, correct?" - Not really, no. As mentioned, when an app is not the default, it's expected to disable most of its SMS functionality. If an app is following this guideline - which, I would expect, most do - then it will not allow sending while it is not the default. I'm sure some do, but it would be a hit-or-miss situation. Additionally, though the system will automatically save outgoing SMS for non-default apps, it will not do the same for outgoing MMS, so a non-default app would not be able to store those to the standard Provider. – Mike M. May 25 '17 at 23:36
  • I would also mention that handling SMS is pretty straightforward and relatively simple, but MMS is kind of a nightmare, both sending and receiving, and your app would have to do both. – Mike M. May 25 '17 at 23:36
  • Mike- thanks for the responses. I think I'm not being clear on what I mean by forwarding intent. Specifically, I'm trying to create the following scenario: When a new message is initiated from the dialer, contacts or call log (or anywhere else an SMS can be started), I want it to open up in either Google Voice or Hangouts. Since neither of those apps support SMS/MMS (hangouts did until this week but no more), they can't be set as default and therefore won't open when you click to send a msg. What I'm suggesting is to have an app that would use intent to open a new outgoing message there. – Gilden May 26 '17 at 05:46
  • Obviously whatever app I'm setting as the default would need to handle SMS/MMS, since what you are saying makes sense (can't forward those roles to an app not set as default). But what I'm suggesting is that any system requests to open a new outgoing message would be forwarded to an app like GV or Hangouts, so that it wouldn't be coming from the carrier at all. Those apps don't support carrier SMS/MMS and therefore won't be disabled as you suggest, and I'd guess can be initiated via intent. – Gilden May 26 '17 at 05:53
  • tl:dr, it sounds like you're saying the best option is to have a custom SMS/MMS app that actually can handle the carrier messages, but modified to not open a new message when the system requests one, but rather forward that request via intent to the app of my choosing. This would be ideal actually, as I would still have access to incoming carrier msgs for 2-step verification and carrier notifications, but all outgoing could be Google Voice with the number I actually want to use. Does that make sense? – Gilden May 26 '17 at 05:56
  • BTW, I found an open source messaging app that almost sounds like it was designed to do something similar. Its called smsdroid, source files are here: https://github.com/felixb/smsdroid I'm not really sure I understand how it works, I've never been very good at following someone else's code, and doesn't help that the author appears to speak German. But I think the idea is that the code can be modified and recompiled to send via another app w/intent. He has a version for a service called websms as a working example. Not sure if this is something totally different. I want to send from GV app – Gilden May 26 '17 at 06:05
  • Uh, yeah, maybe I wasn't following you. If you mean you want to go, e.g., Contacts -> Your app -> Hangouts/Voice but not strict SMS, then yeah, that should be doable. Those apps would still be free to send messages however they actually do. Again, though, your app would be responsible for pretty much everything that's true SMS/MMS, but it sounds like you get that. The project you've linked looks like it might be a good starting point, but, from a quick perusal, it doesn't look like they've got MMS fully working yet. Looks like it'll list MMS already stored, but can't send/receive new MMS. – Mike M. May 26 '17 at 06:30
  • Yes, now I think we're on the same page! There is a large group of Google Voice users who use it as the primary phone number. I actually ported my number to Google to keep it in the cloud. More on this topic video the Google forums: https://productforums.google.com/forum/?utm_medium=email&utm_source=footer#!topic/voice/UWncAe3jo9s;context-place=forum/voice I'm actually not sure if I'd care that MMS for carrier doesn't work. I'd want to keep carrier SMS for 2-step verification purposes and the occasional carrier notification. That's all it gets used for. But it'd be nice to do it right – Gilden May 26 '17 at 07:10
  • In other words, we want Hangouts/Google Voice/etc to be instead of our carrier SMS. But don't want to fully break carrier support in case we ever need that. – Gilden May 26 '17 at 07:11
  • Well, in that case, it might be easier for you to do it from scratch, rather than try to prune and mold that project to what you want. Not sure how much work you're wanting to put into this. Receiving and saving SMS is pretty easy, and listing messages from the Providers isn't too complicated. Beyond that, it would just be a matter of relaying the `Intent`s to where you want them, and ensuring the extras are what Voice or Hangouts or whatever are expecting to receive. The place to start would be making your app eligible to be default: https://stackoverflow.com/a/30133663. – Mike M. May 26 '17 at 07:42
  • 1
    Thanks for all your help! I'm looking to put as little work as possible into this, honestly. Last APK I wrote was in eclipse for Android Froyo, better half of a decade ago. I'm hoping once I understand what needs to be done, I'll either be able to tackle it myself or find someone willing to lend a hand. I've learned a lot here, and very much appreciate it! – Gilden May 26 '17 at 15:27
  • Gilden, I totally understand where you're coming from. Google really didn't think it through when they dropped the ability to accept SMS intent. To sum up, the idea is to have a middleman app that Android thinks can send SMS take the SMS intent and repackage it into an intent that can be used by the Google Voice or Hangouts app(s) (each probably have their own intent types). Please update if you figure this out. – Royal2000H Jun 18 '17 at 04:29
  • Royal, you get it. Although, I've rethought the idea to broaden it. As Mike pointed out, if the middleman app doesn't actually do anything SMS related, it will break that function. The default messaging app is tasked with receiving and storing messages from the carrier, so if it doesn't do actually DO what it claims to do, that function will be dead. Now, I don't necessarily care about carrier SMS, but I do occasionally get notifications of my bill and/or use it for 2-step-verification services that don't accept GV as a valid #. I want it to work, just not be default. – Gilden Jun 19 '17 at 16:50
  • So in a nutshell, instead of just being an app that "fakes" SMS/MMS capability, I think it actually needs to be a basic SMS app that DOES work, but be able to forward all new message requests from outside the app to a third party app (GV, Hangouts, etc). Taking this a step further, why stop at GV apps. Perhaps someone would want another app such as whatsapp to be the default. Technically, anything that accepts a phone number as the "to" field should be doable via intent, so the users could be given choice. But I think working on a working SMS/MMS app is beyond my ability at the moment. – Gilden Jun 19 '17 at 16:53
  • Interesting comment thread... Nearly a year later, have you found or made anything like this? I'd like it too... – Victoria May 03 '18 at 08:54

0 Answers0