我正在写一个Android应用程序,我需要接听来电,做一些工作,然后结束通话.所有的谷歌搜索后,我能找到两种不同的方式来实现这一二者均不会与最新版本的Android的工作,特别是4.1果冻豆之后.
I.)使用广播接收器中的Java Reflection为"android.intent.action.PHONE_STATE"访问"com.android.internal.telephony.ITelephony".下面的示例代码可以在数百个相关帖子中找到:
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) {
if (!intent.getAction().equals("android.intent.action.PHONE_STATE"))
return;
Log.v(TAG, "Receving....");
TelephonyManager telephony = (TelephonyManager)
context.getSystemService(Context.TELEPHONY_SERVICE);
try {
Log.v(TAG, "Get getTeleService...");
Class c = Class.forName(telephony.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
telephonyService = (ITelephony) m.invoke(telephony);
telephonyService.silenceRinger();
Log.v(TAG, "Answering Call now...");
telephonyService.answerRingingCall();
Log.v(TAG, "Call answered...");
//telephonyService.endCall();
} catch (Exception e) {
e.printStackTrace();
Log.e(TAG,
"FATAL ERROR: could …Run Code Online (Sandbox Code Playgroud)