رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

مدیریت تماس (بدسات آوردن شماره تلفن شخصی که در حال تماس گرفتن است))


پست های پیشنهاد شده

سلام دوستان . مین میخوام یه بلک لیست ساده بنویسم. اول از همه نیاز دارم شماره تلفن شخصی که داره با من تماس میگیره را بدست بیارم. یجورایی باید مدیریت تماس داشته باشم. چطور باید شماره شخص تماس گیرنده را بدست بیارم ؟  لطفا با توضیح کامل باشه اخه تازه کارم. ممنون

لینک ارسال
به اشتراک گذاری در سایت های دیگر

برای اینکار ابتدا یک کلاس بدین صورت ایجاد کنید :

[shcode=java]

private class PhoneCallListener extends PhoneStateListener {

    private boolean isPhoneCalling = false;

    @Override

    public void onCallStateChanged(int state, String incomingNumber) {

        if (TelephonyManager.CALL_STATE_RINGING == state) {

            // phone ringing

            Log.i(LOG_TAG, "RINGING, number: " + incomingNumber);

        }

        if (TelephonyManager.CALL_STATE_OFFHOOK == state) {

            // active

            Log.i(LOG_TAG, "OFFHOOK");

            isPhoneCalling = true;

        }

        if (TelephonyManager.CALL_STATE_IDLE == state) {

            // run when class initial and phone call ended, need detect flag

            // from CALL_STATE_OFFHOOK

            Log.i(LOG_TAG, "IDLE number");

            if (isPhoneCalling) {

                Handler handler = new Handler();

                //Put in delay because call log is not updated immediately when state changed

                // The dialler takes a little bit of time to write to it 500ms seems to be enough

                handler.postDelayed(new Runnable() {

                    @Override

                    public void run() {

                        // get start of cursor

                          Log.i("CallLogDetailsActivity", "Getting Log activity...");

                            String[] projection = new String[]{Calls.NUMBER};

                            Cursor cur = getContentResolver().query(Calls.CONTENT_URI, projection, null, null, Calls.DATE +" desc");

                            cur.moveToFirst();

                            String lastCallnumber = cur.getString(0);

                    }

                },500);

                isPhoneCalling = false;

            }

        }

    }

}

[/shcode]

سپس هر وقت میخواهید آن را فراخوانی کنید :

[shcode=java]

PhoneCallListener phoneListener = new PhoneCallListener();

    TelephonyManager telephonyManager = (TelephonyManager) this

            .getSystemService(Context.TELEPHONY_SERVICE);

    telephonyManager.listen(phoneListener,

            PhoneStateListener.LISTEN_CALL_STATE);

[/shcode]

و مجوز ها :

[shcode=xml]

[/shcode]

لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 3 هفته بعد...

برای اینکار ابتدا یک کلاس بدین صورت ایجاد کنید :

[shcode=java]

private class PhoneCallListener extends PhoneStateListener {

    private boolean isPhoneCalling = false;

    @Override

    public void onCallStateChanged(int state, String incomingNumber) {

        if (TelephonyManager.CALL_STATE_RINGING == state) {

            // phone ringing

            Log.i(LOG_TAG, "RINGING, number: " + incomingNumber);

        }

        if (TelephonyManager.CALL_STATE_OFFHOOK == state) {

            // active

            Log.i(LOG_TAG, "OFFHOOK");

            isPhoneCalling = true;

        }

        if (TelephonyManager.CALL_STATE_IDLE == state) {

            // run when class initial and phone call ended, need detect flag

            // from CALL_STATE_OFFHOOK

            Log.i(LOG_TAG, "IDLE number");

            if (isPhoneCalling) {

                Handler handler = new Handler();

                //Put in delay because call log is not updated immediately when state changed

                // The dialler takes a little bit of time to write to it 500ms seems to be enough

                handler.postDelayed(new Runnable() {

                    @Override

                    public void run() {

                        // get start of cursor

                          Log.i("CallLogDetailsActivity", "Getting Log activity...");

                            String[] projection = new String[]{Calls.NUMBER};

                            Cursor cur = getContentResolver().query(Calls.CONTENT_URI, projection, null, null, Calls.DATE +" desc");

                            cur.moveToFirst();

                            String lastCallnumber = cur.getString(0);

                    }

                },500);

                isPhoneCalling = false;

            }

        }

    }

}

[/shcode]

سپس هر وقت میخواهید آن را فراخوانی کنید :

[shcode=java]

PhoneCallListener phoneListener = new PhoneCallListener();

    TelephonyManager telephonyManager = (TelephonyManager) this

            .getSystemService(Context.TELEPHONY_SERVICE);

    telephonyManager.listen(phoneListener,

            PhoneStateListener.LISTEN_CALL_STATE);

[/shcode]

و مجوز ها :

[shcode=xml]

[/shcode]

ممنون . میشه همینو بصورت یه پروژه آماده زیپ کنی واسه دانلود . آخه طریقه استفادشو نمیدونم . یعنی اون کلاسو جداگونه بنویسم بعد تو برنامه اصلی ازش اسفتفاده کنم ؟

اون log.i کارش چیه ؟   LOG_TAG چی توش ذخیره میشه ؟

HOOKOFF چه وضعیته ؟؟؟

سناریوس کدو هم بگبن ممنون .

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...