工作,我必须使用下面的代码为来电拦截 How to reject incoming call programatically in android?
调用编程功能于Android的来电拦截代码没有在真实设备
它在模拟器,但不是真正的设备完全兼容,请给mw一些解决方案 是否需要谷歌的任何权限。 和telephonyService.endCall()也不起作用。
package com.android.MyCellFamily.DAReceiver;
import java.lang.reflect.Method;
import com.android.MyCellFamily.DAService.LocationService;
import com.android.MyCellFamily.DB.ClsDataBaseUtils;
import com.android.internal.telephony.ITelephony;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.widget.Toast;
public class ClsIncomingCallBlocker_DAReceiver extends BroadcastReceiver {
ClsDataBaseUtils dts=new ClsDataBaseUtils();
String clsincommingNumber;
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
try
{
dts.createDatabse("MyCellFamily",context);
dts.createTable("tbl_Contacts", context);
dts.createBlockedStatusTable("tbl_BlockedContacts", context);
MyPhoneStateListener myPhoneStateListener = new MyPhoneStateListener();
((TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE)).listen(myPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
Class c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
com.android.internal.telephony.ITelephony telephonyService =(ITelephony)m.invoke(tm);
Bundle b = intent.getExtras();
clsincommingNumber = b.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
Log.d("clsincommingNumber",clsincommingNumber);
if(dts.checkPreffContactsFrInCall("tbl_Contacts", clsincommingNumber).equals("true"))
{
//Answer Ringing Call
telephonyService.answerRingingCall();
dts.close();
}
else if(dts.checkBlockedStatusFrInCall("tbl_BlockedContacts", clsincommingNumber).equals("true"))
{
System.out.println("Incoming blocker"+dts.checkBlockedStatusFrInCall("tbl_BlockedContacts", clsincommingNumber));
//block incoming call
telephonyService.endCall();
dts.close();
}
else if(LocationService.getStatusOfDriving().equals("block"))
{
System.out.println("Your Status Of Driving is"+LocationService.getStatusOfDriving().toString());
telephonyService.endCall();
this.setResultData(null);
}
else
{
//Answer Ringing Call
telephonyService.answerRingingCall();
dts.close();
}
}
catch(Exception e)
{
}
}
}
是否有更好的方法来阻止呼叫,如果你有一个解决方案,请给我 – bindal 2011-03-26 12:18:40
关于你的评论“(或任何其他电话操作系统)”。在Symbian上,可以回答并挂断第三方应用程序(Etel3rdParty)的来电,并通过Etel直接挂断电话(需要特殊权限 - 例如功能)。 – tidbeck 2011-10-07 09:45:07