Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中,当一个呼叫被错过时访问呼叫者的号码_Android_Android Intent_Android Service - Fatal编程技术网

在android中,当一个呼叫被错过时访问呼叫者的号码

在android中,当一个呼叫被错过时访问呼叫者的号码,android,android-intent,android-service,Android,Android Intent,Android Service,我正试图从通话记录中提取最近错过的电话号码。我使用了下面的代码,我想让它在后台运行,现在我在mainActivity类中作为一个方法编写了这个代码,当调用移动到missed call log时,这个函数应该可以工作。如何使之成为可能plz帮助 public void SendSMStoMissedCall() { String[] strFields = {android.provider.CallLog.Calls.CACHED_NAME, android

我正试图从通话记录中提取最近错过的电话号码。我使用了下面的代码,我想让它在后台运行,现在我在mainActivity类中作为一个方法编写了这个代码,当调用移动到missed call log时,这个函数应该可以工作。如何使之成为可能plz帮助

  public void SendSMStoMissedCall()
{
    String[] strFields = {android.provider.CallLog.Calls.CACHED_NAME, 
            android.provider.CallLog.Calls.NUMBER,android.provider.CallLog.Calls.DATE, 
            android.provider.CallLog.Calls.TYPE};

    String strOrder = android.provider.CallLog.Calls.DATE + " DESC";

    Cursor mCallCursor = getContentResolver().query(android.provider.CallLog.Calls.CONTENT_URI,strFields, null, null, strOrder);

    if (mCallCursor.moveToFirst())
    {

        do 
        {
            boolean missed = mCallCursor.getInt(mCallCursor.getColumnIndex(CallLog.Calls.TYPE)) == CallLog.Calls.MISSED_TYPE;

            if (missed) 
            {
                String name = mCallCursor.getString(mCallCursor.getColumnIndex(CallLog.Calls.CACHED_NAME));
                number = mCallCursor.getString(mCallCursor.getColumnIndex(CallLog.Calls.NUMBER));
                String time = mCallCursor.getString(mCallCursor.getColumnIndex(android.provider.CallLog.Calls.DATE));
                      Log.d("PhoneLog", "You have a missed call from " + name + " on " + number  + " at " + time);  
                String ContactName = objUtility.getContactNameFromNumber(number);

                SendMessage(number);
                getCurrentLocation();
            }
       } 
      while (mCallCursor.moveToNext());

     }

}

创建一个服务,在服务中实现一个
PhoneStateListener
。在
PhoneStateListener
的扩展类中,在
onCallStateChanged
方法中,将代码放在上面的
TelephonyManager.CALL_STATE\u IDLE
案例中。

那么什么不起作用呢?你希望你的代码中哪一部分能工作,但不能?@Calvin我想在后台工作,当一个新的未接来电到来时,我想得到号码。我的意思是哪一部分不能工作?你得到一个空光标?或者光标是空的?或者游标返回错误的值?如果我不知道出了什么问题,我也帮不了你。@Calvin这会有用的,我只是想让它像服务一样工作。我可以实现“phonestatelistener”吗?