Home | History | Annotate | Download | only in telephony
      1 package com.android.internal.telephony;
      2 
      3 import android.content.Context;
      4 import android.provider.BlockedNumberContract;
      5 import android.telephony.Rlog;
      6 
      7 /**
      8  * {@hide} Checks for blocked phone numbers against {@link BlockedNumberContract}
      9  */
     10 public class BlockChecker {
     11     private static final String TAG = "BlockChecker";
     12     private static final boolean VDBG = false; // STOPSHIP if true.
     13 
     14     /**
     15      * Returns {@code true} if {@code phoneNumber} is blocked.
     16      * <p>
     17      * This method catches all underlying exceptions to ensure that this method never throws any
     18      * exception.
     19      */
     20     public static boolean isBlocked(Context context, String phoneNumber) {
     21         boolean isBlocked = false;
     22         long startTimeNano = System.nanoTime();
     23 
     24         try {
     25             if (BlockedNumberContract.SystemContract.shouldSystemBlockNumber(
     26                     context, phoneNumber)) {
     27                 Rlog.d(TAG, phoneNumber + " is blocked.");
     28                 isBlocked = true;
     29             }
     30         } catch (Exception e) {
     31             Rlog.e(TAG, "Exception checking for blocked number: " + e);
     32         }
     33 
     34         int durationMillis = (int) ((System.nanoTime() - startTimeNano) / 1000000);
     35         if (durationMillis > 500 || VDBG) {
     36             Rlog.d(TAG, "Blocked number lookup took: " + durationMillis + " ms.");
     37         }
     38         return isBlocked;
     39     }
     40 }
     41