[Web App Development] Dishe:
I'm trying to solve a problem for Google Voice users, and looking to pick the brain of someone who may know a thing or two about how Android handles SMS, particularly how an app can be set to be the "default" for messaging.

What is my goal, you ask?

Make it possible for Android users to default all new messages from their Google Voice number, rather than the carrier. Yes, you can just remember to initiate a message inside the Google Voice app, but when responding to a missed call or clicking on message from a contacts screen, it will open the system's default SMS app and send from the carrier number instead. Confusion often ensues when the recipient doesn't recognize the number. We're trying to avoid that, as many of us GV fans use it as our primary number and don't know or care what the carrier # is. In other words, we want to avoid sending from the carrier if at all possible.

But doesn't Hangouts do this already?

It did. While Hangouts supported SMS, we could set it as the default app and then tell it to use Google Voice as the default for all new messages (rather than the carrier). This worked pretty well... anywhere in the OS that you want to initiate a message (call log, contacts screen, etc), it would open hangouts screen with GV as the sending service. But now that they are killing SMS support in Hangouts, it seems they are also removing the ability for it to be the default for all messages. They're actively pushing users to switch to another app for SMS, and you can't set it as the default currently unless you install an older version first. Eventually it will probably stop working altogether.

Why not just set the Google Voice app as the default for messaging?

It seems Google does not want us to be able to do that. The app does not have the option to. I'm wondering if it is because it doesn't actually support carrier SMS messages, and perhaps that would create a conflict in OS experience design? I'm not sure.

What is your proposed solution? Making a new SMS app from scratch is a lot of work, and Google's third party support for Google Voice is very limited...

I understand. Realistically, what I'm wondering is, would it be feasible to create a very simple forwarding app. In other words, a small third party app that could be set as the default for messaging, which could just forward the new message request to another app? Google Voice shows up as an option to send messages from other screens, such sharing an image or link. Heck, so does Hangouts (which will still support Google Voice integration, just not the ability to be the default app). The problem is when initiating a text from the dialer, contacts, or call log, it doesn't give us a context menu to choose from. It only goes to the default app. What I want is the ability to intercept that request and then choose the app to default to ourselves! Preferably the Voice app, but even Hangouts would be acceptable... or if possible let the users decide!

Possible pitfalls are

1) Do apps that support being set as default messaging require being able to actually handle carrier SMS? I could understand if that was a requirement from a UX design perspective, but is it actually an OS limitation or is it possible? I recall hearing once that the FB messenger app supports being set as default for messaging, but I don't understand how that could work, and I haven't found reference to it yet (don't use FB messenger personally).

2) If the Android OS would allow it, would it actually break carrier SMS? I know setting Hangouts to be the default moves all carrier SMS into Hangouts, and if switching to another app it would move the messages to that one. If my proposed forwarding app works, would carrier SMS messages just go nowhere? Occasionally the carrier does send a service announcement or bill reminder, etc, and I think it might be important for those to go somewhere. Or maybe not... I'm not sure how the OS handles this.

3)When a request for a new SMS is made, is the request done in a way that can be re-parsed for another app to handle? I really can't find much or any documentation on how this is handled, but I know the information is out there since Android supports third party SMS apps.

I have had trouble finding documentation about how any of this works from a developer's perspective, so I'm hoping someone where could shed some light on whether or not my idea is dead in the water before I pour too much effort into trying to figure this out. Thanks!