android:如何检测来电活动是否有效

时间:2014-08-19 17:57:35

标签: android service

我使用服务在Android中构建应用程序。在服务中,我尝试使用Thread始终显示和隐藏(活动而非隐藏)myActivity。因此,如果我的活动处于活动状态,当用户尝试打开另一个应用程序时,我的活动始终显示,因为我每隔1秒使用Thread检查一次。但我有一个问题,当来电到我的设备我的活动总是显示,它隐藏电话/通话活动。我想问一下,如何检测电话/通话活动,所以如果传入活动或传出活动,我的服务将停止,如果它完成(未激活),我的服务将再次启动?

1 个答案:

答案 0 :(得分:2)

如果您问如何检测来电,那么这将有效。同时在您的服务中调用注册接收器,以便在您的服务启动时,广播接收器也会启动。

public class CallReceiver  extends BroadcastReceiver  {


@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub

// Get the current Phone State
String phoneState = intent.getStringExtra(TelephonyManager.EXTRA_STATE);

if(phoneState == null)
   return;

// If phone is "Rininging"
if(phoneState.equals(TelephonyManager.EXTRA_STATE_RINGING))
 {
   //phone is ringing, add what you want to happen here when incoming call comes
 }
}

在您的清单文件中          

    <!-- Register your Broadcast receiver  -->
    <receiver android:name=".CallReceiver" android:enabled="true"> 
        <intent-filter>
                <action android:name="android.intent.action.PHONE_STATE" /> 
            </intent-filter>
       </receiver>

</application>