آموزش بررسی شماره هنگام تماس گرفتن در برنامه نویسی اندروید
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 جدید اجرا شود.
پستهای مرتبط
سلام خسته نباشی
من میخوام یه اکتیویتی خاص رو این شکلی کنم تو برنامم یعنی وقتی یه شماره خاص گرفته شد
اون اکتیویتی دیگه واسه همیشه نشون داده بشه
میشه توضیح بدی چطوری از این کلاس استفاده کنم به این صورت خواهشا به همراه مثال
ممنون
سلام؛ منظورتونو از عبارت “واسه همیشه نشون داده بشه” متوجه نشدم!