diff options
author | Tyler Gunn <tgunn@google.com> | 2020-12-09 09:57:51 -0800 |
---|---|---|
committer | Tyler Gunn <tgunn@google.com> | 2020-12-11 16:13:33 +0000 |
commit | a8d6b1ff4a8c188ffdbff32dd2a63fda1b55b883 (patch) | |
tree | 2046844cae9e4ef82a9db6f864ccb9659624f90a /src | |
parent | 4c94266286279d545f3a770bad8a641d46164ee4 (diff) | |
download | ContactsProvider-a8d6b1ff4a8c188ffdbff32dd2a63fda1b55b883.tar.gz |
Provide allow-list to recipient of voicemail intents.
This enables an app receiving the intent to launch a background activity
to perform more time consuming (but time sensitive) voicemail related
work.
Test: Manual test; verified that when new VVM broadcast is sent that the
broadcast options are set to allow-list the recipient for 10sec.
Bug: 173155475
Merged-In: I4768ca3aa607bf3341ac8fe89fa074fe65dfedea
Change-Id: I4768ca3aa607bf3341ac8fe89fa074fe65dfedea
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/providers/contacts/VoicemailNotifier.java | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/com/android/providers/contacts/VoicemailNotifier.java b/src/com/android/providers/contacts/VoicemailNotifier.java index 159cec73..b4033eac 100644 --- a/src/com/android/providers/contacts/VoicemailNotifier.java +++ b/src/com/android/providers/contacts/VoicemailNotifier.java @@ -1,5 +1,6 @@ package com.android.providers.contacts; +import android.app.BroadcastOptions; import android.content.ComponentName; import android.content.Context; import android.content.Intent; @@ -27,6 +28,12 @@ public class VoicemailNotifier { private final String TAG = "VoicemailNotifier"; + /** + * Grant recipients of new voicemail broadcasts a 10sec allowlist so they can start a background + * service to do VVM processing. + */ + private final long VOICEMAIL_ALLOW_LIST_DURATION_MILLIS = 10000; + private final Context mContext; private final Uri mBaseUri; @@ -85,7 +92,17 @@ public class VoicemailNotifier { intent.putExtra(VoicemailContract.EXTRA_SELF_CHANGE, callingPackages.contains(component.getPackageName())); } - mContext.sendBroadcast(intent); + if (intentAction.equals(VoicemailContract.ACTION_NEW_VOICEMAIL)) { + BroadcastOptions bopts = BroadcastOptions.makeBasic(); + bopts.setTemporaryAppWhitelistDuration(VOICEMAIL_ALLOW_LIST_DURATION_MILLIS); + Log.i(TAG, String.format("sendNotification: allowMillis=%d, pkg=%s", + VOICEMAIL_ALLOW_LIST_DURATION_MILLIS, component.getPackageName())); + mContext.sendBroadcast(intent, android.Manifest.permission.READ_VOICEMAIL, + bopts.toBundle()); + } else { + mContext.sendBroadcast(intent); + } + Log.v(TAG, String.format("Sent intent. act:%s, url:%s, comp:%s," + " self_change:%s", intent.getAction(), intent.getData(), component.getClassName(), |