2011-11-07 51 views
0

我有此代码可以接收来电号码并在副本中进行查询TelephonyManager.CALL_STATE_RINGING 我已经获得来电号码,但是当我想在侧面查询应用会给我的情况时的错误,我不知道为什么任何一个可以帮助我,请解决问题获取来电号码并进行查询 - Android

这是我的代码

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

欢迎来到Stackoverflow!如果您发现回复有帮助,请投票。如果回复成功回答您的问题,请点击旁边的绿色复选标记以接受答案。另请看看http://stackoverflow.com/questions/how-to-ask关于如何写一个好问题的建议 –

+0

你得到的错误是什么? logcat说什么? –

+0

@exilimex:请张贴您的logcat。 – Hiral

回答

0

我想你要拉升查询代码插入到上接收方法。我没有看到任何理由在这里使用监听器。此外,当你的onReceive函数结束时,这个监听器将会消失,并且不会再听。在您的onReceive中,您可以检查Intent,看看呼叫状态是否正在响铃,然后有条件地执行您的代码。

+0

谢谢我的想法* _ ^ – exilimex