yashsingh1/xdaforums huggingface dataset:
[Lenovo A6000/Plus ROMs, Kernels, Recoveries, & Oth] MR.HACKER5476:
reserved v2
[Lenovo A6000/Plus ROMs, Kernels, Recoveries, & Oth] The Hard Gamer:
Just in case
[Lenovo A6000/Plus ROMs, Kernels, Recoveries, & Oth] unknown:
how many time do it booted ?
[Lenovo A6000/Plus ROMs, Kernels, Recoveries, & Oth] MR.HACKER5476:
not a long time just a normal you can say.....
[Lenovo A6000/Plus ROMs, Kernels, Recoveries, & Oth] unknown:
ok :):):)

why do you have two validus xda thread ?
[Lenovo A6000/Plus ROMs, Kernels, Recoveries, & Oth] laddugaur:
One for nougat one for marshmallow
[Lenovo A6000/Plus ROMs, Kernels, Recoveries, & Oth] unknown:
oke :D:D:D
[Xposed Framework Modules] BehindTheMath:
Reserved
[Xposed Framework Modules] B2OJustin:
Nice to see something happening with this. I more or less abandoned it after switching over to Hangouts. What are your plans for it though? I'd probably consider hooking into Hangouts for any future development.

Edit: Btw, this latest source has also been tested and confirmed working on Nexus 7 stock (without cell service) and at least one other phone with a touchwiz based rom + smart watch (Don't recall which kind). Though rom updates may or may not have changed that since then.
[Xposed Framework Modules] BehindTheMath:
Thank you for the feedback.

Truthfully, in my humble opinion, this app is mature. You guys have done a fantastic job of taking Voice+ and adapting it to a new platform. I only needed to fix the issues caused by new or changed Android internal code. Unless someone has a specific feature request, I think it's ready for a stable release.

That being said, there are a few things I would like to look into at some point in the future. The main one is the viability of supporting the new GV app. I never liked Hangouts. It was slow when it was first released, and it's still slow and buggy. 90% of my contacts use Whatsapp, and the GV app along with XVoice+ helped me with the handful that still use SMS. The only reason I still have Hangouts installed is to manage multiple accounts, and for VoIP calls. Now that the new GV app supports the former, and it looks like the latter is coming at some point, I would love to have XVoice++ support it so I could get rid of Hangouts entirely.
[Xposed Framework Modules] iHelp101:
I am happy to see you figured out what I was unable to. In terms of Google Voice 5.0 you could in theory hook GCM messages directly. The class is "com.google.android.gms.gcm.GcmReceiver". You would use the same onRecieve hook already in the module. I have never seen GMS code obfuscated, so you likely would not have to worry about it. Even if a GCM message for some reason is not a text message the module would be able to filter it out (It checks the Intent contents).
[Xposed Framework Modules] BehindTheMath:
That's an interesting approach. I'll have to look into it when I have time.
[Xposed Framework Modules] ChazzMatt:
THANK YOU!
[Xposed Framework Modules] KnightTim:
OP first of all thanks for doing this!

Second I have a question, I'm still running CM11, because I use Voice+, the original utility that XVoice+ was based on. I have updated my google voice app to the latest version and Voice+ still works, I'm not sure how. You might consider looking at the source code for Voice+ and see if the type of hooks it uses are possible with xposed.

Again thanks for what you have already done.
[Xposed Framework Modules] BehindTheMath:
Voice+ works for you for incoming messages too?

Edit: I looked through the source for Voice+. They listened for the notification from the GV app, and then canceled it, which meant you had the notification flash for a second before being intercepted by Voice+. One of the benefits of XVoice+ was that you could disable the notifications completely in the GV app, and XVoice+ would intercept the message anyway.
[Xposed Framework Modules] BehindTheMath:
I looked at the GV 5.0 code some more. I couldn't figure out how to hook com.google.android.gms.gcm.GcmReceiver, but I was able to hook the com.google.android.apps.voice.backends.gcm.GcmListenerService, which is the entry point for the message in the GV app. It appears to be very easy to intercept the messages from there. The issue is, since GV 5.0 added support for multiple GV accounts, there's no easy way to tell which account the message is for. The GCM message comes with a user_hash field, but it's just a hash, and I can't find a list of corresponding accounts in SQLite or in SharedPrefs. I presume it's decoded somewhere in the app, however, the only code that references it is obfuscated. It would technically be possible to implement a setup routine which would send a test message and grab the user_hash for that message, but that's a bit inelegant.
[Xposed Framework Modules] iHelp101:
Interesting, it is a nice discovery to have been made. Google has gone extremely with obfuscation recently. I also didn't realize they added multi-account support. My bad for giving any false.
[Xposed Framework Modules] BehindTheMath:
No, I think your idea is the best option for supporting GV 5.0. We just need to figure out how to identify the accounts. I'm going to try to dig through the code some more.
[Xposed Framework Modules] B2OJustin:
It has been a while since I've played with Xposed but when I get a little extra time I'll see what I can come up with. Figuring out exactly what to hook has always been the troublesome part though. If it turns out you do need to make use of the account hashes, I'd suggest looking lower in the callstack rather than higher. ie; Find the source of the hashes instead of the final target. You can then map those to usernames as soon as they're generated.
[Xposed Framework Modules] BehindTheMath:
v3.1.2

I've released a new version, v3.1.2. The primary new feature in this version is support for Google Voice 5.0+.

I spent some more time poking through the GV sources, and I found that the list of accounts and corresponding user_hashes are stored in a Base64-encoded field in SharedPreferences called "registered_accounts". I added some code to decode the list and check the incoming message against user_hash of the account we want.

I also released the module on the XPosed Repo, so now it can be installed through the Xposed Installer.

Unfortunately, I lost the password to the signing key. I created a new key, but this means you will need to uninstall the old version before installing the new one.
[Xposed Framework Modules] Stupifier:
New user. Tested on Voice 5.0+. Works flawless so far! This is excellent!

I have no idea why Google decided to NOT allow the Voice 5.0+ to be default SMS app.......but this module works around that issue AND allows me to use my fav texting app in its place. Thank you!

Could you explain the Sync settings a bit more. I just want to understand better. For example, why did you include those settings in the app Are there battery/data implications to using them? What is the downside to disabling all the sync settings?
[Xposed Framework Modules] BehindTheMath:
When you send a message through XVoice++, XVoice++ doesn't put that message in the SMS database, the SMS app does. So if you send a message from another source, for example, the GV app or webapp, that message would not show up in your SMS app. Sync checks the master message list on GV's server to see if your device is missing any messages, and if it is, it sticks them into your SMS history.

It also has the benefit of catching any incoming messages that might have been missed. XVoice++ isn't perfect, and once in a while it won't catch an incoming message, sometimes because the GV app was sleeping (although I suspect this issue might be eliminated with GV 5.0+, since they switched to GCM). Enabling Sync will force XVoice++ to manually check if there are any new messages.

I personally have always had all the Sync options enabled, and the interval set to 15 minutes, and I haven't seen any issues. You can try it for yourself and monitor it. I don't think there's any reason it should impact battery or data usage, since it's just a quick request to GV's server. When I look the logs, it never takes more than a few seconds.
[Xposed Framework Modules] Stupifier:
Thank you for this explanation. So now I'd like to test how well these sync features work. if I understand correctly, I could test this by simply sending a text using GV app directly.....Then open my SMS app and check to see if my SMS app actually shows this newly sent message. The Sync features directly affect how and when SMS app grabs new Incoming/Outgoing GV messages. Am I understanding correctly?
[Xposed Framework Modules] BehindTheMath:
Correct, besides for when you sent an outgoing SMS from the device itself, since then the SMS app stores it right away.
[Xposed Framework Modules] Zoltair Wright:
I'm so happy to see this working! Great job :victory:

one bug I've noticed, it seems to choke on accented characters. try sending " õœôöø ", for me it force closes both Voice and my SMS app
[Xposed Framework Modules] BehindTheMath:
This is with incoming or outgoing messages?
[Xposed Framework Modules] Zoltair Wright:
outgoing. when those same characters are in an incoming message, there is no force close, but the message never arrives
[Xposed Framework Modules] BehindTheMath:
Thanks. I'll have to look into that when I have a chance. It's probably the same issue as emojis.
[Xposed Framework Modules] Stupifier:
Anyone test MMS with this? Or using Join app? Just curious.
[Xposed Framework Modules] Stupifier:
Been having stability issues lately with messages received in Text app coming late or not at all....And MMS (text or photo) not working. Had all sync settings checked. I've disabled for now.
[Xposed Framework Modules] BehindTheMath:
I personally haven't had any issues recently, although I've had similar issues to yours in the past. Are you using Google Voice 5.0?

MMS was never supported, as was mentioned in the OP. I don't have any plans to add support for it, since I think it will be a huge amount of work, if it's even possible.

I haven't even tested what happens when you try. I assume outgoing MMSs would be sent with the carrier, and incoming MMSs would either do nothing or cause a force close. I suppose I should look into that.
[Xposed Framework Modules] BehindTheMath:
v3.2.0 released

Version 3.2.0 has been released.

Changelog:

Fixes issues with emojis and extended characters in incoming messages

Code cleanup

You can download it from the Downloads tab, the Github releases page, or the Xposed repo.

[MENTION=282268]Zoltair Wright[/MENTION], please check if the issues you experienced with incoming messages persist in this version.

It turned out to be an encoding issue. The original code was using the standard GSM-7 character set, which is very limited. I completely rewrote the code to use UCS-2 (UTF-16) encoding, which in theory should support every character that Android does.

A big shout out to Jake Hamby (a former engineer at Google, who helped maintain the internal SMS processing code for Android) for providing a lot of information about PDU structure and processing, and for patiently answering all my questions.
[Xposed Framework Modules] BehindTheMath:
I just tried sending outgoing messages with both accented characters and emojis, and everything was sent successfully.

[MENTION=282268]Zoltair Wright[/MENTION], are you using GV 5.0? Can you send me a logcat of the force close when you try sending?
[Xposed Framework Modules] Zoltair Wright:
using the latest Voice and XVoice++ versions, I can send / receive emoji + accented characters successfully!

great work!! you're killing it :cool:
[Xposed Framework Modules] BehindTheMath:
v3.2.1 fixes a bug where long messages with PDUs with bodies bigger than 255 bytes were causing errors.
[Xposed Framework Modules] user_null:
I'm on Nougat with my new phone and thus can't use xvoice until xposed is updated, but I just wanted to thank you again for figuring this out! :)
[Xposed Framework Modules] Stupifier:
Like many, Xposed is all that is stopping me from moving onto Nougat. IMHO, having functional Xposed is higher priority than having Nougat.
[Xposed Framework Modules] KnightTim:
I just setup my Nexus 5x with MM 6.0.1 and xposed and installed the XVoice++ module, receiving seems to be working alright. But I can't send any messages. I also noticed that during setup I never got a notification for authorizing the app to access my account. I am assuming these are related, I'm going to try to downgrade the app and see if it works with the older versions.
[Xposed Framework Modules] BehindTheMath:
Which version of XVoice++ and Google Voice are you using?

Can you post a logcat?
[Xposed Framework Modules] KnightTim:
Latest version listed on the modules page on xposed, version 3.2.1. And I'm using latest version of google voice from the play store, it says v5.0.149662255.

Links to logcats:

(EDIT: deleted links)

Also if you want I can chat with you over IRC or discord or something.
[Xposed Framework Modules] BehindTheMath:
It definitely looks like the issue is being caused by the lack of authorization. I'm not sure why it didn't ask for it after installation.

Can you try uninstalling and reinstalling XVoice++? I'll PM you later.
[Xposed Framework Modules] KnightTim:
Just tried, same behavior.

EDIT: IT'S FIXED.

In case someone else has the same problem, the issue was I had blocked notifications for Google Play Services to hide the notification for OTAs, but XVoice++ asks for authorization and that goes through Play Services, so once I unblocked notifications the authorization request popped up and it's working great.

Thanks [MENTION=5107417]BehindTheMath[/MENTION] for helping me.
[Xposed Framework Modules] BehindTheMath:
Thank you for your patience as we debugged this. I'm happy we were able to resolve the issue.
[Xposed Framework Modules] Garrett Cornwell:
This is amazing! Thank you and everyone else involved with this project.

Everything is working as expected on 6.0.1 Nexus 6.

I just downgraded back to marshmallow because I was missing Xposed and stumbled on this beauty. Amazing!
[Xposed Framework Modules] kemprp:
whitelist/blacklist?

Thank you to all who have worked to produce this wonderful tool! It contributes greatly to the usefulness of messaging through GV!

I use GV exclusively with some contacts, and my device number exclusively for others.

GV allows one to select outgoing calls to originate from either the GV number, the device number, or to ask which to use for each call. Its usefulness would be greatly advanced if there was a capability to set one or the other as the default for a particular contact, via some type of whitelist, blacklist, or group membership function.

The same feature set added to XVoice++ would, again, make all the difference for this gem! Any chance of adding a something like this?

Thanks again!

Kemp
[Xposed Framework Modules] BehindTheMath:
Do you mean for calling or messaging?
[Xposed Framework Modules] kemprp:
Using the existing (limited) capability of GV for voice as an example, this suggestion is for XVoice++ for messaging - Add ability to save and edit a default path (GV or device number) for messages. It seems this could possibly be done on the fly, or by group membership.
[Xposed Framework Modules] LookAlive:
This module is great, and works for the most part. I've found that after a period of rest, the messages cease to be captured and do not wind up over in the sms app until sending a message (usually a test message to myself) and they come flooding in.

What might be the suggestion to prevent this? Since it works flawlessly until resting for a time I'm led to believe maybe my WiFi is sleeping and breaking the connection? However the odd part is they continue to come to Google voice itself so whatever is breaking it is not fixed by a new gv message arrival. Is there a more preferred version? I've dropped all the way back to 5.0.149, 5.2.156 and 5.3.162, all with this same broken connection after that rest period.

Edit I am using g an s8+ snapdragon variant with the August 19th root
[Xposed Framework Modules] BehindTheMath:
I'm not following.

Do you mean a whitelist/blacklist, or a prompt on every outgoing message to ask for the method to send with?

A whitelist/blacklist has been on the todo list for a while. A prompt has also been mentioned before.

Both of these features would not be trivial to implement, and I don't think I'll have time to work on them any time soon.

I personally have moved on to Android N, and I'm pretty satisfied with the GV app by itself.
[Xposed Framework Modules] BehindTheMath:
What are your sync settings?

Also, can you get a logcat of when an incoming message is received and XVoice++ doesn't get it?

I've had this issue before, but I've never been able to pinpoint what causes it.
[Xposed Framework Modules] LookAlive:
Right after I posted that I got an itch to dig a bit deeper in power management settings. Started poking through settings > apps > ellipses > special access > optimize battery usage.i turned optimization off for Voice, Hangouts, Hangouts dialer, anything related to VPN (I'm on VPN at all times, personal preference), message service, all sms apps I have installed (default Samsung, com.android.messages, and Textra), proxy handler, rootPA, superSU, superSU pro, Xposed installer, and Xposed++. I have others disabled as well but those are the ones that I changed between that occurring and now. As well, I allowed those same apps in the "allow app while data saver on" setting under special access. I also disabled app power monitor (but to be fair that was already off while this was reproducible).

I went an hour and a half with no texts. Ran CatLog and initiated a text from another mobile phone to my gv number and it did hook and pull it into my current default app Textra. I had not been using Textra while I was able to reproduce the issue. I installed that shortly before my last test text, so a gv text was pulled into Textra before the long rest period (~1.5 hours).

My sync settings are set to poll every 15 minutes, receive send as well as boot are selected. I also chose to leave xvoice++'s GUI open in the background, along with Xposed installer, voice, and Textra as opposed to closing all apps (more of a happy accidentally than calculated choice).

I likely will not be awake for another 1.5 hours to test a longer rest period tonight of say 2 hours, but if you have any testing requests or test case settings you'd like me to set up tonight before going to bed (such as closing all background apps so the Xposed mod et all are not active in the background as they were in my last test) let me know when you have a chance and I will test this when I get to work in the morning with CatLog running.that should give it a good 8 hours total between my last received text and the test tomorrow assuming nobody sends me a text halfway through the night.

Yikes, I may have gona overboard in my reply - but my point is I'm happy to test anything needed or suggested, a native sms experience with my GV number (aside from MMS) is a a fantastic thing to have.
[Xposed Framework Modules] BehindTheMath:
I don't think optimization or active in the background would make a difference, because of the way the app is structured. It doesn't actively listen for messages, rather it gets notified by the Xposed hook when one comes in.

I'm trying to figure out if the issue is with the Xposed hook, or with the app after it gets the notification. The logcat should show how far the message gets.
[Xposed Framework Modules] LookAlive:
That would be great if it's not related to power settings, always happy to save battery when and where possible.

I'll get a logcat to you tomorrow.
[Xposed Framework Modules] LookAlive:
So I did receive a text at around 345am (go figure, the one night I want to go the whole night without a text, someone texts me). But that still left ~5 hours of downtime before I woke up and tested. A verification code from Microsoft came through and was captured into Textra. Seems to me I can't reproduce this now as 3 or 4 hours was sufficient for this to occur just yesterday. The only changes I made were what was mentioned in my previous comment. Odd though, it wasn't a "sometimes" kind of issue, it was a guaranteed issue after a few hours.

I was using the com.google.Messages rather than the Samsung variant (Samsung left a spinning "sending" indicator for every outbound message regardless of if it sent or not). I will try one last thing tonight, set the com.google.messages app as the primary sms app again before I go to bed and see if I can reproduce it tomorrow morning. If I can, I'll get you those legs. My preference is to use Textra but I would like to help narrow down the issue for others who use the Google variant messages.
[Xposed Framework Modules] JShan:
Hi. I love the idea of this module. Has anyone made progress on the issue of texts not showing up and then flooding through en masse after a time? I'm getting it too, with Google Messages on MM. Thanks for any tips.
[Xposed Framework Modules] BehindTheMath:
How often does that happen? Most likely it's due to the fact that the push notifications aren't being caught, and instead they're being caught by the manual syncing.
[Xposed Framework Modules] JShan:
It's hard to know. I haven't tracked it with any regularity. I'm not sure what you mean by "aren't being caught" or if there's any way to fix that problem. Given that it's texts that might be time sensitive, unless I can be fully confident that alerts come in a timely manner, it will be hard for me to make the leap to this module (much as I want to; even the new-and-improved Voice app is not nearly as good to use as a good SMS client).
[Xposed Framework Modules] BehindTheMath:
The way XVoice++ intercepts messages from GV is that it hooks the GV app at the point where it receives the push notification from the server. For some reason, which I have never been able to determine what causes it, sometimes the push notification just isn't intercepted.

So no, I cannot guarantee you'll receive time sensitive notifications immediately.
[Xposed Framework Modules] JShan:
OK, thanks for your reply, and for your work on the module. I'll play around with it and see if I can get more of a sense of how it is behaving.
[Xposed Framework Modules] patriotdow:
BehindTheMath, from your knowledge how possible would it be to port something like this to a Magisk module or is that just impossible with the hooks?

I really miss this feature but don't want to lose android pay to use it.
[Xposed Framework Modules] BehindTheMath:
I'm not too familiar how Magisk modules work, but from what I understand, they can't hook other apps. The basis for this module's ability to intercept incoming and outgoing messages is through hooking the GV app and the SMS system package.

I suppose it would be possible to get incoming messages the way the original Voice+ did it, which is by having GV display notifications, and listen for those and dismiss them. This wouldn't even require a Magisk module; all you would need would be to give the app accessibility permissions.
[Xposed Framework Modules] patriotdow:
Interesting, thanks for the insight.