是否有任何示例应用程序演示了Android的Telephony API的功能?我有兴趣获得呼叫通知/来电号码等(我理解它可以使用PhoneStateListener)。此外,第三方应用程序是否可以更改传入呼叫窗口/传出呼叫窗口(基本上是为了给用户一个额外的按钮来搜索来自REST服务的传入号码)?
任何有用的链接或示例应用程序都会非常有用。有什么建议 ?
答案 0 :(得分:4)
PhoneStateListener告诉您的应用有关电话活动的信息。以下是我的一个应用程序中的一些示例代码,可以在手机处于活动状态时暂停音乐:
/**
* Helper class to pause music while a phone call is in progress.
*
* The Android emulator can simulate an outgoing call by clicking
* the phone button and dialing normally. Simulate an incoming call
* by starting the emulator, "telnet localhost 5554" then enter
* "gsm call 5551234" into the telnet session.
*/
private class MusicServicePhoneStateListener extends PhoneStateListener {
private boolean mResumeAfterCall = false;
@Override
public void onCallStateChanged(int state, String incoming_number) {
switch (state) {
case TelephonyManager.CALL_STATE_OFFHOOK:
case TelephonyManager.CALL_STATE_RINGING:
Log.i(tag, "phone active, suspending music service");
mResumeAfterCall = mMediaPlayer.isPlaying();
mMediaPlayer.pause();
break;
case TelephonyManager.CALL_STATE_IDLE:
Log.i(tag, "phone inactive, resuming music service");
if (mResumeAfterCall) {
mMediaPlayer.start();
}
break;
default:
break;
}
}
}
通过以下方式在onCreate中创建并启动监听器:
mPhoneListener = new MusicServicePhoneStateListener();
((TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE)).listen(mPhoneListener, PhoneStateListener.LISTEN_CALL_STATE);
使用以下命令停止onDestroy中的监听器:
((TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE)).listen(mPhoneListener, 0);
至于修改来电对话框,best suggestion I've found将使用短暂延迟,然后是自定义Toast消息(延迟使您的Toast出现在来电对话框“上方”)。