0

我想收听来电和去电,这个过程应该作为服务运行。我做了一个活动,可以很好地识别来电和去电,但我需要将其更改为服务,以便它可以运行到后台。我可以不知道如何改变它。我的活动如下:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TelephonyManager mTelephonyMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
    mTelephonyMgr.listen(new TeleListener(), PhoneStateListener.LISTEN_CALL_STATE);
}

class TeleListener extends PhoneStateListener
{
    public void onCallStateChanged(int state, String incomingNumber)
    {
        super.onCallStateChanged(state, incomingNumber);
        switch (state)
        {
        case TelephonyManager.CALL_STATE_IDLE:
            //CALL_STATE_IDLE;
            Toast.makeText(getApplicationContext(), "CALL_STATE_IDLE", 10000).show();
            break;
        case TelephonyManager.CALL_STATE_OFFHOOK:
            //CALL_STATE_OFFHOOK;
            Toast.makeText(getApplicationContext(), "CALL_STATE_OFFHOOK", 10000).show();
            break;
        case TelephonyManager.CALL_STATE_RINGING:
            //CALL_STATE_RINGING
            Toast.makeText(getApplicationContext(), "CALL_STATE_RINGING", 10000).show();
            break;
        default:
            break;
        }
    }

  }
}

我的第二个问题可以在我的手机中安装一项没有活动的服务吗?

4

2 回答 2

3

只是extends Service代替Activity. 您确实需要一个活动来启动服务。您可以通过注册 a 在启动时启动服务ACTION_BOOT_COMPLETEDbroadcast receiver启动您的服务。但是,从ICS上往下,您需要一个活动来启动您的服务至少一次。之后,将不再需要该活动。

于 2013-04-24T01:56:17.170 回答
2

您需要传递启动服务的意图。您可以创建一个仅启动您的服务的活动,并且该活动没有视图。使您的类扩展Service而不是Activity,并创建另一个活动来实例化您的服务并执行startService(yourserviceInstance);

于 2013-04-24T01:57:47.373 回答