ورود

View Full Version : بلاک کردن تماس



aryana_b
جمعه 05 تیر 1394, 12:50 عصر
سلام دوستان
یک برنامه بلک لیست دارم مینویسم که هر تعداد شماره که کاربر خواست رو به دیتابیس اضافه کنه و اون شماره ها اگه زنگ زدن تماس بلاک بشهبار اولمه دارم برنامه اندروید مینویسم به مشکل خوردم http://www.kelidestan.com/forum/images/smilies/huh.gif کد مربوط به ریجکت تماس رو از اینترنت پیدا کردم :لبخند: کلاس رو یک پکیج جدید ساختم و اینتفرفیس رو هم در پکیج جدیده گذاشتم
پرمیشن های لازم رو هم اضافه کردم ولی نمیدونم به اکتیویتی چی باید اضافه کنم و یا کجا و چجوری این تابع رو باید صدا بزنم.یعنی نمیدونم از این کد چجوری باید استفاده کنم

ممنون میشم اگه راهنماییم کنین http://www.kelidestan.com/forum/images/smilies/blush.gif
اگه راه بهتری هم برای بلاک کردن یه سری شماره خاص هست بگین http://www.kelidestan.com/forum/images/smilies/shy.gif

Interface:




public interface ITelephony {

boolean endCall();

void answerRingingCall();

void silenceRinger();

}





public class IncomingCallReceiver extends BroadcastReceiver {
private ITelephony telephonyService;
private String blacklistednumber = "+458664455";

@Override
public void onReceive(Context context, Intent intent) {

TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE );
try {
Class c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
ITelephony telephonyService = (ITelephony) m.invoke(tm);
Bundle bundle = intent.getExtras();
String phoneNumber = bundle.getString("incoming_number");
Log.e("INCOMING", phoneNumber);
if ((phoneNumber != null) && phoneNumber.equals(blacklistednumber)) {
telephonyService.silenceRinger();
telephonyService.endCall();
Log.e("HANG UP", phoneNumber);
}

} catch (Exception e) {
e.printStackTrace();
}
}

dalmif
جمعه 05 تیر 1394, 13:27 عصر
سلام دوست عزیز.
به انجمن برنامه نویسان خوش اومدی.
کلاس IncomingCallReceiver یک بردکست رسیور هست یعنی وقتی که یکی تماس گرفت با دیوایس، اندروید برنامه شما رو صدا می کنه در اون کلاس شما نوشتید که اگه فردی با شماره +458664455 تماس گرفت تماس رو قطع کنه و فکر می کنم که درستم هست. ولی شما باید هم پرمیشن ها رو توی منیفست درست تعریف کرده باشین و هم این بردکست رسیور رو درست نوشته باشید توی منیفست.
شماره رو تغییر بدید و یه بار تست کنید.:لبخندساده:

پشینهاد بنده اینه که اول به دنبال مبانی اولیه اندروید برید و به صورت کامل یاد بگیرید که بتونید راحت تر برنامه هاتون رو بنویسید...
اگه مشکلی بود در خدمتم.
یا علی.

aryana_b
جمعه 05 تیر 1394, 14:23 عصر
خیلی ممنون :لبخندساده:
من این خط را به مانیفست اضافه کردم


<receiver android:name="IncomingCallReceiver" >
</receiver>



این پرمیشن ها رو هم قرار دادم

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.PROCESS_INCOMING_CALLS" />



ولی خط سوم رو ارور میداد که موقتا پاک کردم تا دلیلش رو بفهمم
برنامه رو امتحان کردم و کار نمیکنه :\
همه ی کلاس ها و اینتفرفیس باید تو یک پکیج باشن؟
نیازی نیست تا من تابع onReceive رو جایی صدا کنم؟

:لبخندساده:

dalmif
جمعه 05 تیر 1394, 16:05 عصر
شما باید در کد زیر:


<receiver android:name="IncomingCallReceiver" >
</receiver>

چندتا خط کد اضافه کنید تا اندروید بدونه که رسیور شما برای چیه و چی می خواد بگیره.
سرچ کنید فکر کنم پیدا کنید.