آموزش بررسی شماره هنگام تماس گرفتن در برنامه نویسی اندروید

آموزش بررسی شماره هنگام تماس گرفتن در برنامه نویسی اندروید

آموزش بررسی شماره هنگام تماس گرفتن در برنامه نویسی اندروید
ACTION_NEW_OUTGOING_CALL


شاید به دلایلی نیاز داشته باشید که شماره را هنگام تماس گرفتن بررسی کنید! مثلا فرض کنید که آیکون اپلیکیشن خود را مخفی کرده‌اید و از این طریق می‌خواهید کاربر با گرفتن یک شماره‌ی خاص و برقراری تماس، اپلیکیشن شمارا باز کند.

قبل از هرچیزی، پست آموزش کامل Broadcast Receiver در اندروید را مطالعه کنید.

مراحل انجام کار

یک کلاس با نام OutgoingCallReceiver ساخته و آن را به صورت زیر تکمیل کنید.

package com.fullkade.test;

import android.annotation.SuppressLint;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class OutgoingCallReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {
            String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
            if (phoneNumber.equals("#")) {
                context.startActivity(new Intent(context, MainActivity.class)
                        .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
            }
        }
    }

}

و رسیور را به صورت زیر به منیفست اضافه کنید:

<receiver android:name=".OutgoingCallReceiver">
    <intent-filter>
        <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
    </intent-filter>
</receiver>

و دسترسی‌های لازم زیر را هم اضافه کنید:

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

همانطور که می‌بینید، اکشن NEW_OUTGOING_CALL برای OutgoingCallReceiver تعریف شده است؛ هم‌چنین، این اکشن، زمانی که شماره‌ای گرفته شد، اجرا می‌شود. بنابراین، در OutgoingCallReceiver، پس از بررسی اکشن، شماره تلفن را دریافت کرده‌ایم و سپس در صورتی که مقدار آن فقط یک علامت # یا هر علامت دلخواه دیگری بود، اقدام به بازکردن برنامه می‌کنیم.

باز کردن اکتیویتی را از طریق context ای که به Broadcas ارسال شده است انجام می‌دهیم و FLAG_ACTIVITY_NEW_TASK را نیز به آن اضافه می‌کنیم تا در یک Task جدید اجرا شود.

فراموش نکنید که دسترسی READ_PHONE_STATE ، یک دسترسی خطرناک برای اندروید 6 به بالا بوده و باید در هنگام اجرای برنامه، از کاربر پرسیده و گرفته شود.

پست‌های مرتبط

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

cp-codfk

نظرات ثبت شده 2 دیدگاه

    1. علی کاربر مهمان گفت:

      سلام خسته نباشی

      من میخوام یه اکتیویتی خاص رو این شکلی کنم تو برنامم یعنی وقتی یه شماره خاص گرفته شد
      اون اکتیویتی دیگه واسه همیشه نشون داده بشه

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

      11
      1. هادی اکبرزاده مدیر سایت گفت:

        سلام؛ منظورتونو از عبارت “واسه همیشه نشون داده بشه” متوجه نشدم!

توضیحات پیشنهادی نظرات اشتراک