gpt4 book ai didi

Android BroadCastReceiver 和 android.intent.action.PHONE_STATE 事件

转载 作者:行者123 更新时间:2023-11-29 16:13:33 24 4
gpt4 key购买 nike

我通过将以下代码 fragment 与 android BroadCastReceiver 结合使用来捕获 android.intent.action.PHONE_STATE 更改事件。我可以成功识别事件并处理来电也可以通过以下代码完成。

我的要求是识别来自特定号码的调用,通过代码结束该调用并为该传入事件调用 Web 服务。

在此,此代码针对调用接收和结束事件运行两次。

我想停止两次调用此方法。我怎样才能停止为第二个事件调用该代码 fragment (结束调用)。如果有人可以帮助我,那就太好了。

 if (intent.getAction().equals(
"android.intent.action.PHONE_STATE")) {
Log.i("INFO", "Call Received");

try {

TelephonyManager telephony = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);

Bundle bundle = intent.getExtras();

Log.i("Calling database", "Creatinng DataHandler Object");
DatabaseHandler db = new DatabaseHandler(context);
String phoneNumber =db.getContact().getPhoneNumber();

Log.i("Retriving : ", "Retriving .."+ db.getContact().getPhoneNumber());


if ((bundle.getString("incoming_number").equals(phoneNumber))) {

Log.i("Test Call", "This is the test call");

@SuppressWarnings("rawtypes")
Class c = Class.forName(telephony.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);

ITelephony telephonyService = (ITelephony) m
.invoke(telephony);
telephonyService = (ITelephony) m.invoke(telephony);


telephonyService.endCall();

// Call the web service and send log details

ServiceClient sc = new ServiceClient();
sc.serviceCall(context);


} else {
Log.i("Normal Call", "This is not the test call");
}

} catch (Exception e) {
Log.i("Exception Occured", "Exception in call code snipet");
}
}

最佳答案

我认为您遇到的问题是电话状态发生了两次变化,一次是在电话响起时,然后是在您结束通话后,电话进入空闲状态。

您只希望此代码运行一次,因此最好的方法是添加额外的电话状态检查以查看它是否正在响铃,如果电话正在响铃则结束通话。

这可以通过添加以下检查来完成:

if (intent.getAction().equals(
"android.intent.action.PHONE_STATE")) {
Log.i("INFO", "Call Received");

String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
//your code here that starts with try block
}

希望对你有帮助

关于Android BroadCastReceiver 和 android.intent.action.PHONE_STATE 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11231760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com