2012-07-19 3 views
2

ServicePhoneStateListener을 만들었습니다. Toast 메시지는 정상적으로 작동하지만 수신 전화에서 다른 Activity을 실행하고 싶습니다. 그러나 그것은 시작되지 않습니다. 이 수업에 어떤 문제가 있습니까? 다음은 코드 Activity입니다. DialogAct은 비어있는 Activity 레이아웃입니다.통화 활동 onCallStateChange from service

public class GSMListenerService extends Service { 
private TelephonyManager tm; 

@Override 
public void onCreate() { 
    super.onCreate(); 

    tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); 
    tm.listen(mPhoneListener, PhoneStateListener.LISTEN_CALL_STATE); 
} 

private PhoneStateListener mPhoneListener = new PhoneStateListener() { 
    public void onCallStateChanged(int state, String incomingNumber) { 
     try { 
      switch (state) { 
      case TelephonyManager.CALL_STATE_RINGING: 
       Intent i = new Intent(GSMListenerService.this,DialogAct.class); 
       startActivity(i); 
       Toast.makeText(GSMListenerService.this, "CALL_STATE_RINGING: ", Toast.LENGTH_SHORT).show(); 

       break; 
      case TelephonyManager.CALL_STATE_OFFHOOK: 
       Toast.makeText(GSMListenerService.this, "CALL_STATE_OFFHOOK", Toast.LENGTH_SHORT).show(); 
       break; 
      case TelephonyManager.CALL_STATE_IDLE: 
       Toast.makeText(GSMListenerService.this, "CALL_STATE_IDLE", Toast.LENGTH_SHORT).show(); 
       break; 
      default: 
       Toast.makeText(GSMListenerService.this, "default", Toast.LENGTH_SHORT).show(); 
       Log.i("Default", "Unknown phone state=" + state); 
      } 
     } catch (Exception e) { 
      Log.i("Exception", "PhoneStateListener() e = " + e); 
     } 
    } 
}; 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
} 

@Override 
public void onStart(Intent intent, int startId) { 
    super.onStart(intent, startId); 
} 

@Override 
public IBinder onBind(Intent intent) { 
    // TODO Auto-generated method stub 
    return null; 
} 
} 

답변

1

FLAG_ACTIVITY_NEW_TASK 플래그를 사용하십시오.

Intent intent = new Intent(GSMListenerService.this, DialogAct.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 
+0

아니요, 도움 안됨 –

+0

귀하의 매니 페스트 파일에서 DialogAct 활동을 신고하는 것을 잊지 않 았습니까? 당신의 logcat 말하는 무엇입니까? – biegleux

+0

DialogAct를 선언했지만 잘못된 경로를 파일에 넣었으므로 정답입니다. 감사합니다! –