GVoice Callback Help Page

Table of Contents

1 Installation

2020-05-29 The app is currently defunct, as Google now blocks logins from embedded browsers.

2019-03-18 The app is no longer available at Google Play Store. It is available at Amazon. Alternatively, you can download and install the latest apk from this link.

Google now requires apps using sensitive permissions to be manually approved. The permissions have to be essential for the app's core functionality. Obviously, as a callback app, GVoice Callback has to rely on sensitive permissions: android.permission.PROCESS_OUTGOING_CALLS (for intercepting call), android.permission.READ_CALL_LOG, android.permission.WRITE_CALL_LOG (for maintaining a correct call log when calls are canceled).

Unfortunately, despite multiple strenuous efforts to prepare video demos and detailed explanations to demonstrate how GVoice Callback's core functionality is to Proxy Calls, Google's distinguished reviewers kept responding that "We couldn’t verify the declared core functionality of your app during our review". Asked to clarify what part should be explained more, Google's appeal team simply replied that they could not give a better answer than the same stock, unspecific message I had already received.

2 Privacy Policy

GVoice Callback does not collect, use, or share any user data. The requested permissions are needed to process outgoing calls and to properly record them in the call log. These operations are all performed locally. Internet access is only used to request callbacks and, for the free version, to serve ads.

3 Overview

Use Google Voice Callback to make free North America / cheap international calls.

You use your phone's native dialer to make a call. GVoice Callback intercepts and cancels the call, and tells Google Voice to call you back at your selected number, which can either be native or go to a VoIP app (e.g., Linphone). After accepting the callback you will then hear the dialing tone and get connected to your callee who will see your Google Voice number.

The workflow is similar to Voice+ (no longer functional) or Google Voice's mobile web interface. It uses no carrier minutes but does require Internet data. Please see How to use on Android tablets without a native dialer app for another mode of operation if you use a tablet with no native phone app.

GVoice Callback is useful if you use Google Voice as your main number and a VoIP provider (e.g., FreedomPop, Talkatone, TextNow, Text Me, Sideline) that does not work with the official app (unlike GVoice Callback, your carrier number will be displayed by default). It is also useful if your inbound calls are cheaper (or even free; e.g., Truphone) than outbound ones.

If you encounter any problems, please do not hesitate to contact me via email. You could also try requesting a callback at Google itself, in order to rule out problems with VoIP setups (e.g., codecs, etc.).

4 Data-only VoIP Scenario

While Hangouts and Hangouts Dialer work fine most of the time, but for some reason, they would occasionally stop ringing for calls to my Google Voice number, even if I have checked the option. Rebooting the phone will not fix it. I have to toggle off the option, wait a bit, and switch it back on. Hangouts also uses more bandwidth and performs poorly when I only have 3G signals.

  • You can use a data-only plan or get one of the free plans from FreedomPop.
  • Install Linphone and register for the Linphone account. Linphone is preferred over other VoIP apps because it supports PUSH notification, so it is reliable even in DOZE mode and drains battery much more slowly. PUSH only works with their SIP account though.
  • Go to Linphone -> Settings -> Audio, under CODECS, uncheck everything else except the G.729, which is very efficient even at low bit rate.
  • Register for a free DID (Direct Inward Dialing) number from CallCentric (no longer free). Go to "DID Forwarding" and put in the "This number" text box: [your-user-id]@sip.linphone.org.
  • Add the DID number as a new forward phone in your Google Voice account. The confirmation call should go to your Linphone app.

5 Settings Page

5.1 Google account

Occasionally the login information will expire and you need to sign in again. Accounts under Google Apps for Work or Education seem to expire more often.

5.2 Outgoing call integration (Enable/disable GVoice Callback)

This toggles the normal mode of operation, as described in Overview. It has no effect if the app is used as a dialer, as described in How to use on Android tablets without a native dialer app.

5.3 Callback numbers

In the normal mode of operation, if Confirm each call is unchecked, this is the number that will be used.

5.4 Merge call back with outgoing call

If this option is unchecked, your call log will have both the outgoing call (which is canceled by GVoice Callback) and the incoming call (from your own Google Voice number). Selecting this option will remove it from call log and modify the length of the original outgoing call accordingly. However, it does nothing if the callback goes to a VoIP app instead of the native dialer.

5.5 Auto answer for native dialer (Requires Notification access for certain devices)

Native support for auto answer is added on Android 8 Oreo. Before that it relies on several hacks, as earlier versions of Android does not provide direct support. Marshmallow to Nougat requires Notification access.

5.6 Auto close after seconds (0 to disable)

The "Wait for callback" window auto closes after the specified number of seconds.

5.7 Confirm each call

If you check this option, a pop-up window will appear for each outgoing call, asking you to select the number to use, or cancel to use the native dialer. If you un-check this option, there will be no confirmation, but you need to select a number in Callback numbers.

If the app is used as a dialer, as described in How to use on Android tablets without a native dialer app, calls are always confirmed.

5.8 Callback filter (Java regex; default: ^(\+|[0-9]).*)

A pretty basic number filter, but can also be rather powerful because you can use any Java regex: numbers not matching the regex will be ignored and not handled by the app. For example, to use GVoice Callback for:

  • International calls only: ^011.*
  • Selected area codes: ^(321|456).*
  • Exclude numbers that start with 011 or (area code) 654: ^(?!011|654).*

5.9 Sign out

Sign out Google Voice and clear cache.

5.10 Upgrade to ad-free version

All transactions are handled by Google or Amazon. If you purchase the app on one device and still see ads on a different device where you have multiple accounts, you can first try killing GVoice Callback and reopening the app to force a refresh. If this does not help, you need to uninstall the app, go to the Play Store website on a browser, switch to the correct Google account, search for "GVoice Callback", and install it again.

6 Donations

I feel really grateful and gratifying when a user surprised me by asking about possibilities of donations. Please don't view this section as a solicitation of donations; it is rather an experiment pretty much like the app itself for me to get a feeling of how these things work. Nonetheless, thanks very much for whoever decides to donate!

7 Frequently Asked Questions

7.1 How to use the app on tablets without a Phone app

GVoice Callback are also registered for handling phone calls. It appears as "Wait for callback" in the pull-up menu when you pick a number from a Contacts app, a web page, etc. You probably need to install a third-party contacts app, as for example, on Samsung tablets, neither the Samsung Contacts app nor the Contacts app from Google (which you can install from the Play Store) initiates a calling activity. "PixelPhone Dialer & Contacts" appears to be a fairly non-intrusive choice.

7.2 GV calls the other party when the callback is declined

GVoice Callback intercepts and cancels an outgoing call, and requests Google to do the callback. The app does not have any telephony capability itself. Google should not connect the other party if you have not accepted the call. Therefore, it is likely:

  • Either Google Voice malfunctioning or your VoIP app misbehaving.
  • Some SIP providers do not properly support TCP, so if you select that instead of UDP as transport, you will experience weird behavior such as that you cannot reliably end an active call.
  • Your phone carrier directs the calling party (in this case, Google) to your voice mail when you reject the call, so the call back appears to Google as being answered (by your voicemail).

7.3 GV calls the other party before the callback is answered

GVoice Callback intercepts and cancels an outgoing call, and requests Google to do the callback. The app does not have any telephony capability itself. Google should not connect the other party if you have not accepted the call. One reason why this might happen is that certain phone carriers play pre-call early media that makes Google think that the call has been answered. You can test if this is the case by requesting a similar callback here.

7.4 Outgoing calls handled by a different app

GVoice Callback can only intercept outgoing calls made via native telephony; it does not intercept general dialing activity. If, say, you recently installed or set Hangouts Dialer to be system default, then calls will be passed to Hangouts that uses VoIP (Data) to make calls. At this point, GVoice Callback has no way to intercept them. You can remove this preference by going Settings -> Apps -> Hangouts or Hangouts Dialer -> Open by default -> CLEAR DEFAULTS.

7.5 Problems with Redmi Note 4 after Android 7 Nougat upgrade

I do not have this device to do the necessary debugging, but there appears to be a work-around, which works when you pick a number from a Contacts app, a web page, etc. You need to clear your current dialer preference (e.g., by going to Settings -> Apps -> Hangouts or Hangouts Dialer -> Open by default -> CLEAR DEFAULTS). Then install a third-part phone app, such as "PixelPhone Dialer & Contacts", and initiate a call from there. In the pull-up menu asking you to select an app to complete the call, choose "Wait for Callback". This work-around essentially uses the app as a dialer and let you to bypass vendor modified dialer app. It will not work if the call is initiated from another dialer app. The confirmation dialog will always show when GVoice Callback is invoked this way. Please see How to use on Android tablets without a native dialer app for more details.