ورود

View Full Version : دریافت تماس از شماره خاص



abbasalim
دوشنبه 16 تیر 1393, 19:21 عصر
بنام خدا
سلام دوستان

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

pouya1999best@g
دوشنبه 16 تیر 1393, 19:50 عصر
اگه جوابتونو گرفتید سریع آموزششو توی اسفندونه بزارید:لبخند:

rubiks.kde
دوشنبه 16 تیر 1393, 21:00 عصر
بنام خدا
سلام دوستان

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

به چه صورت کار میکنید؟یعنی کدتون رو چطوری نوشتید؟تکه کد مربوط به دریافت تماس رو قرار بدهید

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

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

public class PhoneCallReceiver extends BroadcastReceiver {
Context context = null;
private static final String TAG = "Phone call";
private ITelephony telephonyService;


@Override
public void onReceive(Context context, Intent intent) {
Log.v(TAG, "Receving....");
TelephonyManager telephony = (TelephonyManager)
context.getSystemService(Context.TELEPHONY_SERVICE );
try {
Class c = Class.forName(telephony.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
telephonyService = (ITelephony) m.invoke(telephony);
//telephonyService.silenceRinger();
telephonyService.endCall();
} catch (Exception e) {
e.printStackTrace();
}
}
}

حالا یک IDL interface برای دسترسی به سیستم تلفنی مینویسیم و دقت داشته باشید که اسم پکیجش حتما com.android.internal.telephony
باشه (اسم پکیج در شاخه src منظورمه).ITelephony.aidl درست کنید و کدهای زیر رو درش کپی کنید.

package com.android.internal.telephony;

interface ITelephony {


boolean endCall();
void answerRingingCall();
void silenceRinger();


}

در منیفست هم رسیور و پرمیشن های رو به این صورت تعریف کنید.

<receiver android:name=".PhoneCallReceiver">
<intent-filter android:priority="100" >
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>

و

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

داخل رسیور قبل از اینکه تلفن رو قطع کنید چک کنید ببیند شماره تماس گیرنده شماره مورد نظر هست یا نه

abbasalim
سه شنبه 17 تیر 1393, 12:31 عصر
ممنون من خواستم طبق این واسه aidl پیش برم ولی در sdk منیجرم Google Play Billing Library. رو ندارم که نصب کنم :افسرده:

rubiks.kde
سه شنبه 17 تیر 1393, 14:04 عصر
ممنون من خواستم طبق این واسه aidl پیش برم ولی در sdk منیجرم Google Play Billing Library. رو ندارم که نصب کنم :افسرده:

به چه دلیل بهش نیاز دارید؟

Kurdia
سه شنبه 17 تیر 1393, 14:41 عصر
داخل رسیور قبل از اینکه تلفن رو قطع کنید چک کنید ببیند شماره تماس گیرنده شماره مورد نظر هست یا نه

چجوری متوجه بشیم شماره در حال تماس همون شماره مد نظرمون هست؟

abbasalim
سه شنبه 17 تیر 1393, 15:58 عصر
به چه دلیل بهش نیاز دارید؟

شما گفتید ITelephony.aidl رو بسازید چجوری بسازمش؟ پسوند .java میگیره

rubiks.kde
سه شنبه 17 تیر 1393, 17:02 عصر
یه فایل معمولی txt بساز و پسوندش رو تغییر بده و بعد کپی کن:متفکر:

rubiks.kde
سه شنبه 17 تیر 1393, 17:03 عصر
چجوری متوجه بشیم شماره در حال تماس همون شماره مد نظرمون هست؟

اطلاعات تماس در intent ورودی قرار داره میتونی شماره رو بگیری و ببینی کیه

abbasalim
سه شنبه 17 تیر 1393, 17:03 عصر
یه فایل معمولی txt بساز و پسوندش رو تغییر بده و بعد کپی کن:متفکر:

آخه من از یه پروژه دیگه برداشتم ارور داد حالا اینو تست میکنم

abbasalim
چهارشنبه 18 تیر 1393, 13:17 عصر
ممنون درست شد همون از فایل تکست استفاده کردم