Loading src-N/com/android/dialer/compat/BlockedNumbersSdkCompat.java +5 −0 Original line number Diff line number Diff line Loading @@ -16,7 +16,9 @@ package com.android.dialer.compat; import android.content.Context; import android.net.Uri; import android.provider.BlockedNumberContract; import android.provider.BlockedNumberContract.BlockedNumbers; public class BlockedNumbersSdkCompat { Loading @@ -29,4 +31,7 @@ public class BlockedNumbersSdkCompat { public static final String E164_NUMBER = BlockedNumbers.COLUMN_E164_NUMBER; public static boolean canCurrentUserBlockNumbers(Context context) { return BlockedNumberContract.canCurrentUserBlockNumbers(context); } } src-pre-N/com/android/dialer/compat/BlockedNumbersSdkCompat.java +5 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.dialer.compat; import android.content.Context; import android.net.Uri; public class BlockedNumbersSdkCompat { Loading @@ -27,4 +28,8 @@ public class BlockedNumbersSdkCompat { public static final String COLUMN_ORIGINAL_NUMBER = null; public static final String E164_NUMBER = null; public static boolean canCurrentUserBlockNumbers(Context context) { return false; } } src/com/android/dialer/CallDetailActivity.java +11 −4 Original line number Diff line number Diff line Loading @@ -59,7 +59,6 @@ import com.android.dialer.database.FilteredNumberAsyncQueryHandler; import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnCheckBlockedListener; import com.android.dialer.filterednumber.BlockNumberDialogFragment; import com.android.dialer.filterednumber.FilteredNumbersUtil; import com.android.dialer.filterednumber.MigrateBlockedNumbersDialogFragment; import com.android.dialer.logging.InteractionEvent; import com.android.dialer.logging.Logger; import com.android.dialer.util.DialerUtils; Loading Loading @@ -156,7 +155,8 @@ public class CallDetailActivity extends AppCompatActivity PhoneNumberUtil.canPlaceCallsTo(mNumber, mDetails.numberPresentation); mCallButton.setVisibility(canPlaceCallsTo ? View.VISIBLE : View.GONE); mCopyNumberActionItem.setVisibility(canPlaceCallsTo ? View.VISIBLE : View.GONE); mBlockNumberActionItem.setVisibility(canPlaceCallsTo ? View.VISIBLE : View.GONE); updateBlockActionItemVisibility(canPlaceCallsTo ? View.VISIBLE : View.GONE); final boolean isSipNumber = PhoneNumberUtil.isSipNumber(mNumber); final boolean isVoicemailNumber = Loading Loading @@ -277,7 +277,9 @@ public class CallDetailActivity extends AppCompatActivity } }); mBlockNumberActionItem = (TextView) findViewById(R.id.call_detail_action_block); updateBlockActionItemVisibility(View.VISIBLE); mBlockNumberActionItem.setOnClickListener(this); mEditBeforeCallActionItem = findViewById(R.id.call_detail_action_edit_before_call); mEditBeforeCallActionItem.setOnClickListener(this); Loading @@ -292,6 +294,13 @@ public class CallDetailActivity extends AppCompatActivity } } private void updateBlockActionItemVisibility(int visibility) { if (!FilteredNumberCompat.canAttemptBlockOperations(mContext)) { visibility = View.GONE; } mBlockNumberActionItem.setVisibility(visibility); } @Override public void onResume() { super.onResume(); Loading Loading @@ -468,8 +477,6 @@ public class CallDetailActivity extends AppCompatActivity mBlockNumberActionItem.setCompoundDrawablesRelativeWithIntrinsicBounds( R.drawable.ic_call_detail_unblock, 0, 0, 0); } mBlockNumberActionItem.setVisibility(View.VISIBLE); } private void closeSystemDialogs() { Loading src/com/android/dialer/calllog/CallLogListItemViewHolder.java +2 −2 Original line number Diff line number Diff line Loading @@ -55,7 +55,6 @@ import com.android.dialer.compat.FilteredNumberCompat; import com.android.dialer.database.FilteredNumberAsyncQueryHandler; import com.android.dialer.filterednumber.BlockNumberDialogFragment; import com.android.dialer.filterednumber.FilteredNumbersUtil; import com.android.dialer.filterednumber.MigrateBlockedNumbersDialogFragment; import com.android.dialer.logging.Logger; import com.android.dialer.logging.ScreenEvent; import com.android.dialer.service.ExtendedBlockingButtonRenderer; Loading Loading @@ -346,7 +345,8 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder .setOnMenuItemClickListener(this); } if (FilteredNumbersUtil.canBlockNumber(mContext, number, countryIso)) { if (FilteredNumberCompat.canAttemptBlockOperations(mContext) && FilteredNumbersUtil.canBlockNumber(mContext, number, countryIso)) { mFilteredNumberAsyncQueryHandler.isBlockedNumber( new FilteredNumberAsyncQueryHandler.OnCheckBlockedListener() { @Override Loading src/com/android/dialer/compat/FilteredNumberCompat.java +36 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.UserManager; import android.preference.PreferenceManager; import android.support.annotation.Nullable; import android.telecom.TelecomManager; Loading Loading @@ -293,4 +294,39 @@ public class FilteredNumberCompat { } return new Intent(context, BlockedNumbersSettingsActivity.class); } /** * Method used to determine if block operations are possible. * * @param context The {@link Context}. * @return {@code true} if the app and user can block numbers, {@code false} otherwise. */ public static boolean canAttemptBlockOperations(Context context) { if (!CompatUtils.isNCompatible()) { // Dialer blocking, must be primary user return UserManagerCompat.isSystemUser( (UserManager) context.getSystemService(Context.USER_SERVICE)); } // Great Wall blocking, must be primary user and the default or system dialer // TODO(maxwelb): check that we're the default or system Dialer return BlockedNumbersSdkCompat.canCurrentUserBlockNumbers(context); } /** * Used to determine if the call blocking settings can be opened. * * @param context The {@link Context}. * @return {@code true} if the current user can open the call blocking settings, {@code false} * otherwise. */ public static boolean canCurrentUserOpenBlockSettings(Context context) { if (!CompatUtils.isNCompatible()) { // Dialer blocking, must be primary user return UserManagerCompat.isSystemUser( (UserManager) context.getSystemService(Context.USER_SERVICE)); } // BlockedNumberContract blocking, verify through Contract API return BlockedNumbersSdkCompat.canCurrentUserBlockNumbers(context); } } Loading
src-N/com/android/dialer/compat/BlockedNumbersSdkCompat.java +5 −0 Original line number Diff line number Diff line Loading @@ -16,7 +16,9 @@ package com.android.dialer.compat; import android.content.Context; import android.net.Uri; import android.provider.BlockedNumberContract; import android.provider.BlockedNumberContract.BlockedNumbers; public class BlockedNumbersSdkCompat { Loading @@ -29,4 +31,7 @@ public class BlockedNumbersSdkCompat { public static final String E164_NUMBER = BlockedNumbers.COLUMN_E164_NUMBER; public static boolean canCurrentUserBlockNumbers(Context context) { return BlockedNumberContract.canCurrentUserBlockNumbers(context); } }
src-pre-N/com/android/dialer/compat/BlockedNumbersSdkCompat.java +5 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.dialer.compat; import android.content.Context; import android.net.Uri; public class BlockedNumbersSdkCompat { Loading @@ -27,4 +28,8 @@ public class BlockedNumbersSdkCompat { public static final String COLUMN_ORIGINAL_NUMBER = null; public static final String E164_NUMBER = null; public static boolean canCurrentUserBlockNumbers(Context context) { return false; } }
src/com/android/dialer/CallDetailActivity.java +11 −4 Original line number Diff line number Diff line Loading @@ -59,7 +59,6 @@ import com.android.dialer.database.FilteredNumberAsyncQueryHandler; import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnCheckBlockedListener; import com.android.dialer.filterednumber.BlockNumberDialogFragment; import com.android.dialer.filterednumber.FilteredNumbersUtil; import com.android.dialer.filterednumber.MigrateBlockedNumbersDialogFragment; import com.android.dialer.logging.InteractionEvent; import com.android.dialer.logging.Logger; import com.android.dialer.util.DialerUtils; Loading Loading @@ -156,7 +155,8 @@ public class CallDetailActivity extends AppCompatActivity PhoneNumberUtil.canPlaceCallsTo(mNumber, mDetails.numberPresentation); mCallButton.setVisibility(canPlaceCallsTo ? View.VISIBLE : View.GONE); mCopyNumberActionItem.setVisibility(canPlaceCallsTo ? View.VISIBLE : View.GONE); mBlockNumberActionItem.setVisibility(canPlaceCallsTo ? View.VISIBLE : View.GONE); updateBlockActionItemVisibility(canPlaceCallsTo ? View.VISIBLE : View.GONE); final boolean isSipNumber = PhoneNumberUtil.isSipNumber(mNumber); final boolean isVoicemailNumber = Loading Loading @@ -277,7 +277,9 @@ public class CallDetailActivity extends AppCompatActivity } }); mBlockNumberActionItem = (TextView) findViewById(R.id.call_detail_action_block); updateBlockActionItemVisibility(View.VISIBLE); mBlockNumberActionItem.setOnClickListener(this); mEditBeforeCallActionItem = findViewById(R.id.call_detail_action_edit_before_call); mEditBeforeCallActionItem.setOnClickListener(this); Loading @@ -292,6 +294,13 @@ public class CallDetailActivity extends AppCompatActivity } } private void updateBlockActionItemVisibility(int visibility) { if (!FilteredNumberCompat.canAttemptBlockOperations(mContext)) { visibility = View.GONE; } mBlockNumberActionItem.setVisibility(visibility); } @Override public void onResume() { super.onResume(); Loading Loading @@ -468,8 +477,6 @@ public class CallDetailActivity extends AppCompatActivity mBlockNumberActionItem.setCompoundDrawablesRelativeWithIntrinsicBounds( R.drawable.ic_call_detail_unblock, 0, 0, 0); } mBlockNumberActionItem.setVisibility(View.VISIBLE); } private void closeSystemDialogs() { Loading
src/com/android/dialer/calllog/CallLogListItemViewHolder.java +2 −2 Original line number Diff line number Diff line Loading @@ -55,7 +55,6 @@ import com.android.dialer.compat.FilteredNumberCompat; import com.android.dialer.database.FilteredNumberAsyncQueryHandler; import com.android.dialer.filterednumber.BlockNumberDialogFragment; import com.android.dialer.filterednumber.FilteredNumbersUtil; import com.android.dialer.filterednumber.MigrateBlockedNumbersDialogFragment; import com.android.dialer.logging.Logger; import com.android.dialer.logging.ScreenEvent; import com.android.dialer.service.ExtendedBlockingButtonRenderer; Loading Loading @@ -346,7 +345,8 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder .setOnMenuItemClickListener(this); } if (FilteredNumbersUtil.canBlockNumber(mContext, number, countryIso)) { if (FilteredNumberCompat.canAttemptBlockOperations(mContext) && FilteredNumbersUtil.canBlockNumber(mContext, number, countryIso)) { mFilteredNumberAsyncQueryHandler.isBlockedNumber( new FilteredNumberAsyncQueryHandler.OnCheckBlockedListener() { @Override Loading
src/com/android/dialer/compat/FilteredNumberCompat.java +36 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.UserManager; import android.preference.PreferenceManager; import android.support.annotation.Nullable; import android.telecom.TelecomManager; Loading Loading @@ -293,4 +294,39 @@ public class FilteredNumberCompat { } return new Intent(context, BlockedNumbersSettingsActivity.class); } /** * Method used to determine if block operations are possible. * * @param context The {@link Context}. * @return {@code true} if the app and user can block numbers, {@code false} otherwise. */ public static boolean canAttemptBlockOperations(Context context) { if (!CompatUtils.isNCompatible()) { // Dialer blocking, must be primary user return UserManagerCompat.isSystemUser( (UserManager) context.getSystemService(Context.USER_SERVICE)); } // Great Wall blocking, must be primary user and the default or system dialer // TODO(maxwelb): check that we're the default or system Dialer return BlockedNumbersSdkCompat.canCurrentUserBlockNumbers(context); } /** * Used to determine if the call blocking settings can be opened. * * @param context The {@link Context}. * @return {@code true} if the current user can open the call blocking settings, {@code false} * otherwise. */ public static boolean canCurrentUserOpenBlockSettings(Context context) { if (!CompatUtils.isNCompatible()) { // Dialer blocking, must be primary user return UserManagerCompat.isSystemUser( (UserManager) context.getSystemService(Context.USER_SERVICE)); } // BlockedNumberContract blocking, verify through Contract API return BlockedNumbersSdkCompat.canCurrentUserBlockNumbers(context); } }