public void ManualReport(string incommingNumber)
    {
        // MANUAL CREATE CONNECTION
        Android_SQLite   android_SQLite = new Android_SQLite();
        SQLiteConnection connection     = android_SQLite.GetConnection();

        reportDatabaseHelper = new UserReportDatabaseHelper("" +
                                                            "IF_WE_ADD_THIS_TEXT_OUR_CLASS_WILL_" +
                                                            "USE_A_DEFALT_CONSTRUCTOR_WITHOUT_PLATFORM_ERROR" +
                                                            "WHEN_RUNNING_IN_BACKGROUND");

        // MANUAL ADD CONNECT FOR THIS CLASS
        reportDatabaseHelper.connection = connection;
        reportDatabaseHelper.CreateTable();

        UserReport report = new UserReport();

        report.phoneNumber = incommingNumber;
        report.reportDate  = DateTime.Now;
        report.IsSync      = false;
        reportDatabaseHelper.AddReport(report);
    }
        // THƯƠNG THỨC OVERRIDE NÀY SẼ ĐƯỢC THỰC THI KỂ CẢ APP LÚC KHÔNG CHẠY
        public override void OnReceive(Context context, Intent intent)
        {
            try
            {
                // MANUAL CREATE CONNECTION FOR SETTING
                Android_SQLite android_SQLite = new Android_SQLite();
                connection            = android_SQLite.GetConnection();
                settingDatabaseHelper = new SettingDatabaseHelper("" +
                                                                  "IF_WE_ADD_THIS_TEXT_OUR_CLASS_WILL_" +
                                                                  "USE_A_DEFALT_CONSTRUCTOR_WITHOUT_PLATFORM_ERROR" +
                                                                  "WHEN_RUNNING_IN_BACKGROUND");
                // MANUAL ADD CONNECT FOR THIS CLASS
                settingDatabaseHelper.connection = connection;
                settingDatabaseHelper.CreateTable();
                isEnale        = settingDatabaseHelper.GetKeyValue(SystemKey.IS_ENABLE);
                isNotification = settingDatabaseHelper.GetKeyValue(SystemKey.IS_NOTIFICATION);
            }
            catch
            {
            }


            // LẤY DANH SÁCH REPORT MỖI LẦN ĐƯỢC INVOKE
            try
            {
                // MANUAL CREATE CONNECTION
                Android_SQLite android_SQLite = new Android_SQLite();
                connection           = android_SQLite.GetConnection();
                reportDatabaseHelper = new UserReportDatabaseHelper("" +
                                                                    "IF_WE_ADD_THIS_TEXT_OUR_CLASS_WILL_" +
                                                                    "USE_A_DEFALT_CONSTRUCTOR_WITHOUT_PLATFORM_ERROR" +
                                                                    "WHEN_RUNNING_IN_BACKGROUND");

                // MANUAL ADD CONNECT FOR THIS CLASS
                reportDatabaseHelper.connection = connection;
                reportDatabaseHelper.CreateTable();
                reports = reportDatabaseHelper.GetAllReport();

                //MANUAL ADD CONNECT FOR THIS Telemarketer
                connection = android_SQLite.GetConnection();
                telemarketerDatabaseHelper = new TelemarketerDatabaseHelper("" +
                                                                            "IF_WE_ADD_THIS_TEXT_OUR_CLASS_WILL_" +
                                                                            "USE_A_DEFALT_CONSTRUCTOR_WITHOUT_PLATFORM_ERROR" +
                                                                            "WHEN_RUNNING_IN_BACKGROUND");
                telemarketerDatabaseHelper.connection = connection;
                telemarketerDatabaseHelper.CreateTable();
                telemarketers = telemarketerDatabaseHelper.GetAllTelemarketer();
            }
            catch
            {
            }

            // Toast.MakeText(context, "EX: " + reportDatabaseHelper.exceptionError, ToastLength.Short).Show();



            // LẤY DANH BẠ LÊN
            // MỤC ĐÍCH ĐỂ SO SÁNH NÊU KHÔNG CÓ Ở TRONG DANH BẠ THÌ MỚI BLOCK
            try
            {
                contactServiceAndroid = new ContactService_Android();
                phoneContacts         = contactServiceAndroid.GetAllContacts();
            }
            catch
            {
                Toast.MakeText(context, "ERROR WHEN GET CONTACT", ToastLength.Short).Show();
            }


            #region BLOCKING
            if (intent.Extras != null)
            {
                if (!isEnale)
                {
                    return;
                }
                string state = intent.GetStringExtra(TelephonyManager.ExtraState);
                // TRÍCH XUẤT SỐ ĐIỆN THOẠI GỌI ĐÊN (GỌI ĐI)
                incomingNumber = intent.GetStringExtra(TelephonyManager.ExtraIncomingNumber);
                //   incomingNumber = "6505551212";
                // CUỘC GỌI ĐẾN
                if (state.Equals(TelephonyManager.ExtraStateRinging))
                {
                    isIcomingCall = true;

                    //KIẾM TRA XEM CÓ PHẢI LÀ SỐ ĐIỆN THOẠI TRONG DANH BẠ KHÔNG?
                    foreach (PhoneContact phone in phoneContacts)
                    {
                        if (isTheSame(incomingNumber, phone.PhoneNumber))
                        {
                            isInPhonebook = true;
                            //NẰM TRONG PHONEBOOK THÌ KHÔNG CẦN KIỂM TRA NỮA.
                            return;
                        }
                    }
                    // KIỂM TRA XEM CÓ PHẢI LÀ SỐ TRONG DANH SÁCH BLOCK HAY KHÔNG?
                    foreach (UserReport report in reports)
                    {
                        if (incomingNumber.Equals(report.phoneNumber))
                        {
                            StopACall(context);
                            isBlocking = true;
                            return;
                        }
                    }

                    //Toast.MakeText(context, reports.Count, ToastLength.Long).Show();

                    // KIỂM TRA XEM CÓ PHẢI LÀ SỐ TRONG DANH SÁCH Telemarketer HAY KHÔNG?
                    foreach (Telemarketer telemarketer in telemarketers)
                    {
                        if (incomingNumber.Equals(telemarketer.phoneNumber))
                        {
                            StopACall(context);
                            isBlocking = true;
                            return;
                        }
                    }
                }
                if (state.Equals(TelephonyManager.ExtraStateOffhook))
                {
                    isIcomingCall = false;
                    return;
                }


                // CUỘC GỌI BỊ DẬP MÁY - KỂ CẢ VIỆC GỌI CHO NGƯỜI KHÁC TẮT
                if (state.Equals(TelephonyManager.ExtraStateIdle))
                {
                    if (isInPhonebook)
                    {
                        return;
                    }

                    if (isBlocking && isIcomingCall)
                    {
                        CreateNotification(incomingNumber, context);
                        isBlocking = false;
                        return;
                    }

                    if (!isIcomingCall)
                    {
                        return;
                    }


                    // TẠO RA THÔNG BÁO REPORT NẾU NÓ LÀ MỘT SỐ KHÔNG BỊ BLOCK, KHÔNG NẰM TRONG DANH BẠ VÀ LÀ CUỘC GỌI ĐẾN
                    CreateNotification_Report(incomingNumber, context);
                    isBlocking    = false;
                    isIcomingCall = false;
                    isInPhonebook = false;
                }
            }
            #endregion
        }