Loading AndroidManifest.xml +4 −0 Original line number Diff line number Diff line Loading @@ -74,6 +74,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--> Loading java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java +3 −1 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import com.android.dialer.common.LogUtil; 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; Loading Loading @@ -181,7 +182,8 @@ public final class LegacyVoicemailNotifier { if (context.getSystemService(TelephonyManager.class).getPhoneCount() <= 1) { return NOTIFICATION_TAG; } return NOTIFICATION_TAG_PREFIX + phoneAccountHandle.getId(); return NOTIFICATION_TAG_PREFIX + VoicemailChannelUtils.getHashedPhoneAccountId(phoneAccountHandle); } private LegacyVoicemailNotifier() {} Loading java/com/android/dialer/notification/VoicemailChannelUtils.java +34 −2 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ 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; Loading @@ -38,15 +40,35 @@ import android.util.ArraySet; 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) /* package */ final class VoicemailChannelUtils { public 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) { Loading Loading @@ -124,7 +146,17 @@ import java.util.Set; private static String getChannelIdForAccount(@NonNull PhoneAccountHandle handle) { Assert.isNotNull(handle); return PER_ACCOUNT_VOICEMAIL_CHANNEL_ID_PREFIX + ":" + handle.getId(); 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(); } /** Loading java/com/android/dialer/voicemail/listui/error/VoicemailErrorMessage.java +1 −1 Original line number Diff line number Diff line Loading @@ -150,7 +150,7 @@ public class VoicemailErrorMessage { public void onClick(View v) { Logger.get(context) .logImpression(DialerImpression.Type.VOICEMAIL_ALERT_SET_PIN_CLICKED); Intent intent = new Intent(VoicemailChangePinActivity.ACTION_CHANGE_PIN); Intent intent = new Intent(context, VoicemailChangePinActivity.class); intent.putExtra(VoicemailClient.PARAM_PHONE_ACCOUNT_HANDLE, phoneAccountHandle); context.startActivity(intent); } Loading java/com/android/dialer/voicemail/settings/AndroidManifest.xml +0 −4 Original line number Diff line number Diff line Loading @@ -29,10 +29,6 @@ android:parentActivityName="com.android.dialer.app.settings.DialerSettingsActivity" android:theme="@style/SettingsStyle" android:windowSoftInputMode="stateVisible|adjustResize"> <intent-filter> <action android:name="com.android.dialer.action.CHANGE_PIN"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> <activity android:name=".RecordVoicemailGreetingActivity" Loading Loading
AndroidManifest.xml +4 −0 Original line number Diff line number Diff line Loading @@ -74,6 +74,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--> Loading
java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java +3 −1 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import com.android.dialer.common.LogUtil; 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; Loading Loading @@ -181,7 +182,8 @@ public final class LegacyVoicemailNotifier { if (context.getSystemService(TelephonyManager.class).getPhoneCount() <= 1) { return NOTIFICATION_TAG; } return NOTIFICATION_TAG_PREFIX + phoneAccountHandle.getId(); return NOTIFICATION_TAG_PREFIX + VoicemailChannelUtils.getHashedPhoneAccountId(phoneAccountHandle); } private LegacyVoicemailNotifier() {} Loading
java/com/android/dialer/notification/VoicemailChannelUtils.java +34 −2 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ 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; Loading @@ -38,15 +40,35 @@ import android.util.ArraySet; 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) /* package */ final class VoicemailChannelUtils { public 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) { Loading Loading @@ -124,7 +146,17 @@ import java.util.Set; private static String getChannelIdForAccount(@NonNull PhoneAccountHandle handle) { Assert.isNotNull(handle); return PER_ACCOUNT_VOICEMAIL_CHANNEL_ID_PREFIX + ":" + handle.getId(); 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(); } /** Loading
java/com/android/dialer/voicemail/listui/error/VoicemailErrorMessage.java +1 −1 Original line number Diff line number Diff line Loading @@ -150,7 +150,7 @@ public class VoicemailErrorMessage { public void onClick(View v) { Logger.get(context) .logImpression(DialerImpression.Type.VOICEMAIL_ALERT_SET_PIN_CLICKED); Intent intent = new Intent(VoicemailChangePinActivity.ACTION_CHANGE_PIN); Intent intent = new Intent(context, VoicemailChangePinActivity.class); intent.putExtra(VoicemailClient.PARAM_PHONE_ACCOUNT_HANDLE, phoneAccountHandle); context.startActivity(intent); } Loading
java/com/android/dialer/voicemail/settings/AndroidManifest.xml +0 −4 Original line number Diff line number Diff line Loading @@ -29,10 +29,6 @@ android:parentActivityName="com.android.dialer.app.settings.DialerSettingsActivity" android:theme="@style/SettingsStyle" android:windowSoftInputMode="stateVisible|adjustResize"> <intent-filter> <action android:name="com.android.dialer.action.CHANGE_PIN"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> <activity android:name=".RecordVoicemailGreetingActivity" Loading