/** Override the onReceive method of the BroadcastReceiver to include our GV Callback code. */ @Override public void onReceive(Context context, Intent outgoing) { // Set up settings, and don't do anything if not enabled mySettings = SettingsProvider.getInstance(context); if (!mySettings.getUseCallback()) return; // don't do anything because Google Voice doesn't support numbers // less than 10 digits anyway. Also, it might be an emergency. String number = outgoing.getStringExtra(Intent.EXTRA_PHONE_NUMBER).replaceAll("[^0-9]", ""); if (number.length() < 10) { return; } // don't mess with voicemail numbers TelephonyManager tmgr = (TelephonyManager) context.getSystemService(Activity.TELEPHONY_SERVICE); String voicemailNumber = tmgr.getVoiceMailNumber(); if (voicemailNumber != null && voicemailNumber.equals(number)) { return; } // TODO don't try and call our own GV number from GV // Set up GV call GVCommunicator.insertPlaceholderCall(context.getContentResolver(), number); myContext = context; cancel(); myTask = new CallTask(); myTask.execute(number); GVPhoneStateListener phoneListener = new GVPhoneStateListener(context); TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE); setResultData(null); }
public static void cancel() { if (myTask != null) { myTask.cancel(true); } }