aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/android/providers/contacts/VoicemailNotifier.java19
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(),