【发布时间】:2014-02-24 14:43:40
【问题描述】:
在我的 android 应用程序中,我创建了一个 BroadcastReceiver 来检测来电;我的代码运行得很好。如果有来电 (EXTRA_STATE_RINGING),我可以在 logcat 中看到我的 incommingNumber,也可以在用户接听电话时看到 (EXTRA_STATE_OFFHOOK)
- 我使用
shared preferences来存储振铃状态的来电号码(字符串),然后将其置于摘机状态。
这是我的代码,完美运行:
public class IncomingCallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String incomingNumber = null ;
if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_RINGING))
{
// Ringing state
// Phone number
incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
Log.i("test2", incomingNumber);
SharedPreferences myPrefs = context.getSharedPreferences("myPrefs",Context.MODE_WORLD_WRITEABLE);
SharedPreferences.Editor prefsEditor = myPrefs.edit();
prefsEditor.putString("Incomingnumber", incomingNumber);
//Not forgot to commit.
prefsEditor.commit();
}
else if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_OFFHOOK))
{
//get the incoming number
SharedPreferences myPrefs = context.getSharedPreferences("myPrefs",Context.MODE_WORLD_READABLE);
String incomNumber = myPrefs.getString("Incomingnumber", incomingNumber);
// This code will execute when the call is answered
Log.i("test2", incomNumber);
Toast.makeText(context,incomNumber, Toast.LENGTH_LONG).show();
}
但是:
我的问题是,当用户只是 Accept 来电时,我的代码可以显示祝酒词。
所以,我需要知道如何检测已接听来电的结束以执行其他操作(显示警报对话框或启动活动)
【问题讨论】:
-
如何在拨出电话断开时获取toast中的号码?
-
看看this
标签: android broadcastreceiver phone-call