[automerger skipped] Use an explicit intent to start VoicemailChangePinActivityPeer. am: 02e1666deb am: 726e28e6e6 am: 334cd0f3bc am: 464e1511da am: f11cd11128 am: 7b623c42fb am: 12ff7c5bf0 am: f1fbd27c51 am: a62d823118 -s ours
am skip reason: Merged-In If31e733c4f94fa4d0793a7538ec76a10752329b6 with SHA-1 ea87e575e6 is already in history
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Dialer/+/16199369
Change-Id: I39514bb651847a75e504f951b11717802c67a814
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 723cecf..891aa8a 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -23,6 +23,8 @@
android:minSdkVersion="24"
android:targetSdkVersion="30"/>
+
+ <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
@@ -74,6 +76,10 @@
presses home. -->
<uses-permission android:name="android.permission.STOP_APP_SWITCHES"/>
+ <!-- Used for sending PendingIntents to dynamically registered receivers -->
+ <uses-permission android:name="com.android.dialer.permission.DIALER_ORIGIN"
+ android:protectionLevel="signature" />
+
<!-- Permissions needed for badger count showing on launch icon. -->
<!--for Samsung-->
diff --git a/java/com/android/contacts/common/model/ContactLoader.java b/java/com/android/contacts/common/model/ContactLoader.java
index 12cca4f..a3a3b9d 100644
--- a/java/com/android/contacts/common/model/ContactLoader.java
+++ b/java/com/android/contacts/common/model/ContactLoader.java
@@ -39,6 +39,7 @@
import com.android.contacts.common.GroupMetaData;
import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.common.model.account.AccountTypeWithDataSet;
+import com.android.contacts.common.model.account.GoogleAccountType;
import com.android.contacts.common.model.dataitem.DataItem;
import com.android.contacts.common.model.dataitem.PhoneDataItem;
import com.android.contacts.common.model.dataitem.PhotoDataItem;
@@ -727,6 +728,10 @@
final String servicePackageName = accountType.getViewContactNotifyServicePackageName();
if (!TextUtils.isEmpty(serviceName) && !TextUtils.isEmpty(servicePackageName)) {
final Uri uri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
+ if (accountType instanceof GoogleAccountType) {
+ ((GoogleAccountType) accountType).handleRawContactViewed(context, uri);
+ continue;
+ }
final Intent intent = new Intent();
intent.setClassName(servicePackageName, serviceName);
intent.setAction(Intent.ACTION_VIEW);
diff --git a/java/com/android/contacts/common/model/account/GoogleAccountType.java b/java/com/android/contacts/common/model/account/GoogleAccountType.java
index a25544b..e10ade4 100644
--- a/java/com/android/contacts/common/model/account/GoogleAccountType.java
+++ b/java/com/android/contacts/common/model/account/GoogleAccountType.java
@@ -18,6 +18,8 @@
import android.content.ContentValues;
import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Event;
import android.provider.ContactsContract.CommonDataKinds.Phone;
@@ -196,11 +198,28 @@
@Override
public String getViewContactNotifyServiceClassName() {
- return "com.google.android.syncadapters.contacts." + "SyncHighResPhotoIntentService";
+ return PLUS_EXTENSION_PACKAGE_NAME + ".people.sync.focus.SyncHighResPhotoIntentOperation";
}
@Override
public String getViewContactNotifyServicePackageName() {
- return "com.google.android.syncadapters.contacts";
+ return PLUS_EXTENSION_PACKAGE_NAME;
+ }
+
+ /**
+ * Sends a broadcast to the sync adapter to trigger a high res photo sync for the contact which
+ * was viewed
+ * @param context context to send broadcast in
+ * @param rawContactUri Uri of the raw contact viewed
+ */
+ public void handleRawContactViewed(Context context, Uri rawContactUri) {
+ final Intent intent = new Intent();
+ intent.setData(rawContactUri);
+ // New broadcast for syncing high res photo.
+ intent.setPackage(GoogleAccountType.PLUS_EXTENSION_PACKAGE_NAME);
+ intent.setAction(
+ "com.google.android.gms.people.sync.focus.SYNC_HIGH_RES_PHOTO");
+
+ context.sendBroadcast(intent);
}
}
diff --git a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
index e044460..05011d1 100644
--- a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
+++ b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
@@ -560,7 +560,7 @@
case CallbackAction.VOICE:
if (callLogCache.isVoicemailNumber(accountHandle, number)) {
// Call to generic voicemail number, in case there are multiple accounts
- primaryActionButtonView.setTag(IntentProvider.getReturnVoicemailCallIntentProvider(null));
+ primaryActionButtonView.setTag(IntentProvider.getReturnVoicemailCallIntentProvider());
} else if (canSupportAssistedDialing()) {
primaryActionButtonView.setTag(
IntentProvider.getAssistedDialIntentProvider(
diff --git a/java/com/android/dialer/app/calllog/IntentProvider.java b/java/com/android/dialer/app/calllog/IntentProvider.java
index 21f3418..423b49c 100644
--- a/java/com/android/dialer/app/calllog/IntentProvider.java
+++ b/java/com/android/dialer/app/calllog/IntentProvider.java
@@ -161,14 +161,13 @@
};
}
- public static IntentProvider getReturnVoicemailCallIntentProvider(
- @Nullable PhoneAccountHandle phoneAccountHandle) {
+ public static IntentProvider getReturnVoicemailCallIntentProvider() {
return new IntentProvider() {
@Override
public Intent getIntent(Context context) {
return PreCall.getIntent(
context,
- CallIntentBuilder.forVoicemail(phoneAccountHandle, CallInitiationType.Type.CALL_LOG));
+ CallIntentBuilder.forVoicemail(CallInitiationType.Type.CALL_LOG));
}
};
}
diff --git a/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java b/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java
index 1388f43..62ae748 100644
--- a/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java
+++ b/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java
@@ -36,7 +36,6 @@
import com.android.dialer.location.GeoUtil;
import com.android.dialer.notification.DialerNotificationManager;
import com.android.dialer.notification.NotificationChannelManager;
-import com.android.dialer.notification.VoicemailChannelUtils;
import com.android.dialer.phonenumberutil.PhoneNumberHelper;
import com.android.dialer.telecom.TelecomUtil;
import com.android.dialer.theme.base.ThemeComponent;
@@ -182,8 +181,8 @@
if (context.getSystemService(TelephonyManager.class).getPhoneCount() <= 1) {
return NOTIFICATION_TAG;
}
- return NOTIFICATION_TAG_PREFIX
- + VoicemailChannelUtils.getHashedPhoneAccountId(phoneAccountHandle);
+
+ return NOTIFICATION_TAG_PREFIX + phoneAccountHandle.getId();
}
private LegacyVoicemailNotifier() {}
diff --git a/java/com/android/dialer/callintent/CallIntentBuilder.java b/java/com/android/dialer/callintent/CallIntentBuilder.java
index 613fdf6..7cc5891 100644
--- a/java/com/android/dialer/callintent/CallIntentBuilder.java
+++ b/java/com/android/dialer/callintent/CallIntentBuilder.java
@@ -117,10 +117,10 @@
}
public static CallIntentBuilder forVoicemail(
- @Nullable PhoneAccountHandle phoneAccountHandle, CallInitiationType.Type callInitiationType) {
+ CallInitiationType.Type callInitiationType) {
return new CallIntentBuilder(
Uri.fromParts(PhoneAccount.SCHEME_VOICEMAIL, "", null), callInitiationType)
- .setPhoneAccountHandle(phoneAccountHandle);
+ .setPhoneAccountHandle(null);
}
public void setUri(@NonNull Uri uri) {
diff --git a/java/com/android/dialer/commandline/impl/CallCommand.java b/java/com/android/dialer/commandline/impl/CallCommand.java
index b3ea860..d0008a3 100644
--- a/java/com/android/dialer/commandline/impl/CallCommand.java
+++ b/java/com/android/dialer/commandline/impl/CallCommand.java
@@ -19,8 +19,6 @@
import android.content.Context;
import android.content.Intent;
import android.support.annotation.NonNull;
-import android.telecom.PhoneAccount;
-import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
import com.android.dialer.buildtype.BuildType;
import com.android.dialer.buildtype.BuildType.Type;
@@ -67,12 +65,10 @@
}
String number = args.expectPositional(0, "number");
TelecomManager telecomManager = appContext.getSystemService(TelecomManager.class);
- PhoneAccountHandle phoneAccountHandle =
- telecomManager.getDefaultOutgoingPhoneAccount(PhoneAccount.SCHEME_TEL);
CallIntentBuilder callIntentBuilder;
if ("voicemail".equals(number)) {
callIntentBuilder =
- CallIntentBuilder.forVoicemail(phoneAccountHandle, CallInitiationType.Type.DIALPAD);
+ CallIntentBuilder.forVoicemail(CallInitiationType.Type.DIALPAD);
} else {
callIntentBuilder = new CallIntentBuilder(number, CallInitiationType.Type.DIALPAD);
}
diff --git a/java/com/android/dialer/contacts/hiresphoto/HighResolutionPhotoRequesterImpl.java b/java/com/android/dialer/contacts/hiresphoto/HighResolutionPhotoRequesterImpl.java
index 9201604..0c14613 100644
--- a/java/com/android/dialer/contacts/hiresphoto/HighResolutionPhotoRequesterImpl.java
+++ b/java/com/android/dialer/contacts/hiresphoto/HighResolutionPhotoRequesterImpl.java
@@ -51,8 +51,8 @@
@VisibleForTesting
static final ComponentName SYNC_HIGH_RESOLUTION_PHOTO_SERVICE =
new ComponentName(
- "com.google.android.syncadapters.contacts",
- "com.google.android.syncadapters.contacts.SyncHighResPhotoIntentService");
+ "com.google.android.gms",
+ "com.google.android.gms.people.sync.focus.SyncHighResPhotoIntentOperation");
private final Context appContext;
private final ListeningExecutorService backgroundExecutor;
@@ -81,7 +81,8 @@
private void requestInternal(Uri contactUri) throws RequestFailedException {
for (Long rawContactId : getGoogleRawContactIds(getContactId(contactUri))) {
Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
- Intent intent = new Intent(Intent.ACTION_VIEW);
+ Intent intent = new Intent();
+ intent.setAction("com.google.android.gms.people.sync.focus.SYNC_HIGH_RES_PHOTO");
intent.setComponent(SYNC_HIGH_RESOLUTION_PHOTO_SERVICE);
intent.setDataAndType(rawContactUri, RawContacts.CONTENT_ITEM_TYPE);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
@@ -89,7 +90,7 @@
LogUtil.i(
"HighResolutionPhotoRequesterImpl.requestInternal",
"requesting photo for " + rawContactUri);
- appContext.startService(intent);
+ appContext.sendBroadcast(intent);
} catch (IllegalStateException | SecurityException e) {
throw new RequestFailedException("unable to start sync adapter", e);
}
diff --git a/java/com/android/dialer/dialpadview/DialpadFragment.java b/java/com/android/dialer/dialpadview/DialpadFragment.java
index 2d0eff5..12c82c9 100644
--- a/java/com/android/dialer/dialpadview/DialpadFragment.java
+++ b/java/com/android/dialer/dialpadview/DialpadFragment.java
@@ -1136,7 +1136,7 @@
public void callVoicemail() {
PreCall.start(
- getContext(), CallIntentBuilder.forVoicemail(null, CallInitiationType.Type.DIALPAD));
+ getContext(), CallIntentBuilder.forVoicemail(CallInitiationType.Type.DIALPAD));
hideAndClearDialpad();
}
diff --git a/java/com/android/dialer/notification/VoicemailChannelUtils.java b/java/com/android/dialer/notification/VoicemailChannelUtils.java
index 83bda0f..ddc0f77 100644
--- a/java/com/android/dialer/notification/VoicemailChannelUtils.java
+++ b/java/com/android/dialer/notification/VoicemailChannelUtils.java
@@ -16,8 +16,6 @@
package com.android.dialer.notification;
-import static java.nio.charset.StandardCharsets.UTF_8;
-
import android.Manifest.permission;
import android.annotation.TargetApi;
import android.app.NotificationChannel;
@@ -40,35 +38,15 @@
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.util.PermissionsUtil;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
/** Utilities for working with voicemail channels. */
@TargetApi(VERSION_CODES.O)
-public final class VoicemailChannelUtils {
+/* package */ final class VoicemailChannelUtils {
@VisibleForTesting static final String GLOBAL_VOICEMAIL_CHANNEL_ID = "phone_voicemail";
private static final String PER_ACCOUNT_VOICEMAIL_CHANNEL_ID_PREFIX = "phone_voicemail_account_";
- private static final char[] hexDigits = "0123456789abcdef".toCharArray();
-
- /**
- * Returns a String representation of the hashed value of the PhoneAccountHandle's id (the
- * Sim ICC ID).
- * In case it fails to hash the id it will return an empty string.
- */
- public static String getHashedPhoneAccountId(@NonNull PhoneAccountHandle handle) {
- byte[] handleBytes = handle.getId().getBytes(UTF_8);
- try {
- byte[] hashedBytes = MessageDigest.getInstance("SHA-256").digest(handleBytes);
- return byteArrayToHexString(hashedBytes);
- } catch (NoSuchAlgorithmException e) {
- LogUtil.e("VoicemailChannelUtils.getHashedPhoneAccountId",
- "NoSuchAlgorithmException throw! Returning empty string!");
- return "";
- }
- }
@SuppressWarnings("MissingPermission") // isSingleSimDevice() returns true if no permission
static Set<String> getAllChannelIds(@NonNull Context context) {
@@ -146,17 +124,7 @@
private static String getChannelIdForAccount(@NonNull PhoneAccountHandle handle) {
Assert.isNotNull(handle);
- return PER_ACCOUNT_VOICEMAIL_CHANNEL_ID_PREFIX
- + ":"
- + getHashedPhoneAccountId(handle);
- }
-
- private static String byteArrayToHexString(byte[] bytes) {
- StringBuilder sb = new StringBuilder(2 * bytes.length);
- for (byte b : bytes) {
- sb.append(hexDigits[(b >> 4) & 0xf]).append(hexDigits[b & 0xf]);
- }
- return sb.toString();
+ return PER_ACCOUNT_VOICEMAIL_CHANNEL_ID_PREFIX + ":" + handle.getId();
}
/**
diff --git a/java/com/android/dialer/voicemail/listui/error/OmtpVoicemailMessageCreator.java b/java/com/android/dialer/voicemail/listui/error/OmtpVoicemailMessageCreator.java
index 29b6989..850b938 100644
--- a/java/com/android/dialer/voicemail/listui/error/OmtpVoicemailMessageCreator.java
+++ b/java/com/android/dialer/voicemail/listui/error/OmtpVoicemailMessageCreator.java
@@ -66,7 +66,7 @@
return new VoicemailErrorMessage(
context.getString(R.string.voicemail_error_activating_title),
context.getString(R.string.voicemail_error_activating_message),
- VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()));
+ VoicemailErrorMessage.createCallVoicemailAction(context));
}
if (Status.NOTIFICATION_CHANNEL_STATE_NO_CONNECTION == status.notificationChannelState) {
@@ -77,7 +77,7 @@
return new VoicemailErrorMessage(
context.getString(R.string.voicemail_error_activation_failed_title),
context.getString(R.string.voicemail_error_activation_failed_message),
- VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()),
+ VoicemailErrorMessage.createCallVoicemailAction(context),
VoicemailErrorMessage.createRetryAction(context, status));
}
@@ -85,7 +85,7 @@
return new VoicemailErrorMessage(
context.getString(R.string.voicemail_error_no_data_title),
context.getString(R.string.voicemail_error_no_data_message),
- VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()),
+ VoicemailErrorMessage.createCallVoicemailAction(context),
VoicemailErrorMessage.createRetryAction(context, status));
}
@@ -93,7 +93,7 @@
return new VoicemailErrorMessage(
context.getString(R.string.voicemail_error_no_data_title),
context.getString(R.string.voicemail_error_no_data_cellular_required_message),
- VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()),
+ VoicemailErrorMessage.createCallVoicemailAction(context),
VoicemailErrorMessage.createRetryAction(context, status));
}
@@ -101,7 +101,7 @@
return new VoicemailErrorMessage(
context.getString(R.string.voicemail_error_bad_config_title),
context.getString(R.string.voicemail_error_bad_config_message),
- VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()),
+ VoicemailErrorMessage.createCallVoicemailAction(context),
VoicemailErrorMessage.createRetryAction(context, status));
}
@@ -109,7 +109,7 @@
return new VoicemailErrorMessage(
context.getString(R.string.voicemail_error_communication_title),
context.getString(R.string.voicemail_error_communication_message),
- VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()),
+ VoicemailErrorMessage.createCallVoicemailAction(context),
VoicemailErrorMessage.createRetryAction(context, status));
}
@@ -117,7 +117,7 @@
return new VoicemailErrorMessage(
context.getString(R.string.voicemail_error_server_title),
context.getString(R.string.voicemail_error_server_message),
- VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()),
+ VoicemailErrorMessage.createCallVoicemailAction(context),
VoicemailErrorMessage.createRetryAction(context, status));
}
@@ -125,7 +125,7 @@
return new VoicemailErrorMessage(
context.getString(R.string.voicemail_error_server_connection_title),
context.getString(R.string.voicemail_error_server_connection_message),
- VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()),
+ VoicemailErrorMessage.createCallVoicemailAction(context),
VoicemailErrorMessage.createRetryAction(context, status));
}
diff --git a/java/com/android/dialer/voicemail/listui/error/VoicemailErrorMessage.java b/java/com/android/dialer/voicemail/listui/error/VoicemailErrorMessage.java
index a3c294d..e22f306 100644
--- a/java/com/android/dialer/voicemail/listui/error/VoicemailErrorMessage.java
+++ b/java/com/android/dialer/voicemail/listui/error/VoicemailErrorMessage.java
@@ -159,7 +159,7 @@
@NonNull
public static Action createCallVoicemailAction(
- final Context context, final PhoneAccountHandle phoneAccountHandle) {
+ final Context context) {
return new Action(
context.getString(R.string.voicemail_action_call_voicemail),
new OnClickListener() {
@@ -169,7 +169,7 @@
PreCall.start(
context,
CallIntentBuilder.forVoicemail(
- phoneAccountHandle, CallInitiationType.Type.VOICEMAIL_ERROR_MESSAGE));
+ CallInitiationType.Type.VOICEMAIL_ERROR_MESSAGE));
}
});
}
diff --git a/java/com/android/dialer/voicemail/listui/error/Vvm3VoicemailMessageCreator.java b/java/com/android/dialer/voicemail/listui/error/Vvm3VoicemailMessageCreator.java
index 17173d8..863c586 100644
--- a/java/com/android/dialer/voicemail/listui/error/Vvm3VoicemailMessageCreator.java
+++ b/java/com/android/dialer/voicemail/listui/error/Vvm3VoicemailMessageCreator.java
@@ -167,7 +167,7 @@
return new VoicemailErrorMessage(
context.getString(R.string.vvm3_error_unknown_user_title),
getCustomerSupportString(context, R.string.vvm3_error_unknown_user_message),
- VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()),
+ VoicemailErrorMessage.createCallVoicemailAction(context),
createCallCustomerSupportAction(context));
}
@@ -175,7 +175,7 @@
return new VoicemailErrorMessage(
context.getString(R.string.vvm3_error_unknown_device_title),
getCustomerSupportString(context, R.string.vvm3_error_unknown_device_message),
- VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()),
+ VoicemailErrorMessage.createCallVoicemailAction(context),
createCallCustomerSupportAction(context));
}
@@ -183,7 +183,7 @@
return new VoicemailErrorMessage(
context.getString(R.string.vvm3_error_invalid_password_title),
getCustomerSupportString(context, R.string.vvm3_error_invalid_password_message),
- VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()),
+ VoicemailErrorMessage.createCallVoicemailAction(context),
createCallCustomerSupportAction(context));
}
@@ -219,7 +219,7 @@
return new VoicemailErrorMessage(
context.getString(R.string.vvm3_error_subscriber_unknown_title),
getCustomerSupportString(context, R.string.vvm3_error_subscriber_unknown_message),
- VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()),
+ VoicemailErrorMessage.createCallVoicemailAction(context),
createCallCustomerSupportAction(context));
}
@@ -227,7 +227,7 @@
return new VoicemailErrorMessage(
context.getString(R.string.vvm3_error_imap_getquota_error_title),
getCustomerSupportString(context, R.string.vvm3_error_imap_getquota_error_message),
- VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()),
+ VoicemailErrorMessage.createCallVoicemailAction(context),
createCallCustomerSupportAction(context));
}
@@ -235,7 +235,7 @@
return new VoicemailErrorMessage(
context.getString(R.string.vvm3_error_imap_select_error_title),
getCustomerSupportString(context, R.string.vvm3_error_imap_select_error_message),
- VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()),
+ VoicemailErrorMessage.createCallVoicemailAction(context),
createCallCustomerSupportAction(context));
}
@@ -243,7 +243,7 @@
return new VoicemailErrorMessage(
context.getString(R.string.vvm3_error_imap_error_title),
getCustomerSupportString(context, R.string.vvm3_error_imap_error_message),
- VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()),
+ VoicemailErrorMessage.createCallVoicemailAction(context),
createCallCustomerSupportAction(context));
}
diff --git a/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java b/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java
index 4e82722..5a16f86 100644
--- a/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java
+++ b/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java
@@ -108,7 +108,7 @@
PreCall.getIntent(
context,
CallIntentBuilder.forVoicemail(
- phoneAccountHandle, CallInitiationType.Type.LEGACY_VOICEMAIL_NOTIFICATION)),
+ CallInitiationType.Type.LEGACY_VOICEMAIL_NOTIFICATION)),
PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
} else {
Intent launchVoicemailSettingsIntent =
diff --git a/java/com/android/voicemail/impl/sms/StatusSmsFetcher.java b/java/com/android/voicemail/impl/sms/StatusSmsFetcher.java
index 7ddf646..dd945e9 100644
--- a/java/com/android/voicemail/impl/sms/StatusSmsFetcher.java
+++ b/java/com/android/voicemail/impl/sms/StatusSmsFetcher.java
@@ -53,8 +53,12 @@
private static final long STATUS_SMS_TIMEOUT_MILLIS = 60_000;
+ private static final String PERMISSION_DIALER_ORIGIN =
+ "com.android.dialer.permission.DIALER_ORIGIN";
+
private static final String ACTION_REQUEST_SENT_INTENT =
"com.android.voicemailomtp.sms.REQUEST_SENT";
+
private static final int ACTION_REQUEST_SENT_REQUEST_CODE = 0;
private CompletableFuture<Bundle> future = new CompletableFuture<>();
@@ -67,7 +71,7 @@
this.phoneAccountHandle = phoneAccountHandle;
IntentFilter filter = new IntentFilter(ACTION_REQUEST_SENT_INTENT);
filter.addAction(OmtpService.ACTION_SMS_RECEIVED);
- context.registerReceiver(this, filter);
+ context.registerReceiver(this, filter, PERMISSION_DIALER_ORIGIN, /* scheduler= */ null);
}
@Override
@@ -89,7 +93,10 @@
// Because the receiver is registered dynamically, implicit intent must be used.
// There should only be a single status SMS request at a time.
return PendingIntent.getBroadcast(
- context, ACTION_REQUEST_SENT_REQUEST_CODE, intent, PendingIntent.FLAG_CANCEL_CURRENT);
+ context,
+ ACTION_REQUEST_SENT_REQUEST_CODE,
+ intent,
+ PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
}
@Override