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