2011-11-07 4 views
0

발신자 번호를 수신하고 사이드 케이스로 쿼리하려면이 코드를 사용하십시오. TelephonyManager.CALL_STATE_RINGING 이미 발신자 번호를 얻었으나 앱에서 제공하는 경우 측면에서 쿼리를 수행하려고 할 때 내가 어느 날 문제수신 전화 번호 가져 오기 및 쿼리 - Android

를 해결하시기 바랍니다 도움이 될 수 있습니다 이유를 알 수없는 error 본 내 코드입니다

public class IncomingCallReciever extends BroadcastReceiver { 

protected static final String TAG = "SWAJ"; 
private Context mContext; 
private Intent mIntent; 


@Override 
public void onReceive(Context context, Intent intent) { 
    Log.d(TAG ," onCallStateChanged "); 
    mContext = context; 
    mIntent = intent; 
    TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
    int events = PhoneStateListener.LISTEN_CALL_STATE; 
    tm.listen(phoneStateListener, events); 
} 

private final PhoneStateListener phoneStateListener = new PhoneStateListener() { 
    @Override 
    public void onCallStateChanged(int state, String incomingNumber) { 

     switch (state) { 

     case TelephonyManager.CALL_STATE_RINGING: 

      SilentMeDB databaseHelper = new SilentMeDB(mContext); 
      SQLiteDatabase db = databaseHelper.getReadableDatabase(); 
      Cursor c = db.query("events",null,null, null, null, null, null); 
      c.moveToFirst(); 
      while(!c.isAfterLast()) 
       {   
       try 
        {     
         Log.d(TAG, "Message is " + c.getString(c.getColumnIndex("Message"))); 
        } 
       catch(Exception e) 
        { 
         Log.d("Exp", e.getMessage()); 
        }   
       c.moveToNext();         
       } c.close();  
      break; 
     case TelephonyManager.CALL_STATE_OFFHOOK: 

     } 

     super.onCallStateChanged(state, incomingNumber); 
    } 
}; 

} 
+0

Welcome to Stackoverflow! 답변이 도움이된다면 투표하십시오. 응답으로 질문에 성공적으로 답변 한 경우 옆에있는 녹색 확인 표시를 클릭하여 대답을 수락하십시오. 또한 좋은 질문을 작성하는 방법에 대한 조언은 http://stackoverflow.com/questions/how-to-ask에서 확인하십시오 –

+0

무엇이 오류입니까? 로그캣은 뭐라고 말합니까? –

+0

@exilimex : logcat을 게시하십시오. – Hiral

답변

0

난 당신이에받을 방법들로 쿼리 코드를 이동하려는 생각합니다. 여기 리스너를 사용할 이유가 없습니다. 게다가 onReceive 함수가 끝나면 청취자는 사라지고 더 이상 듣지 않을 것입니다. onReceive에서 통화 상태가 울린 다음 조건에 따라 코드를 실행하면보고자하는 Intent를 확인할 수 있습니다.

+0

감사합니다. 나는 생각을했다. * _ ^ – exilimex

관련 문제