我正在开发一个应用程序,它与被调用的号码一起工作——它改变了它们。通话结束后,我想更改被叫号码,用户将在“通话记录”中看到更改后的号码。
我想这样做的原因是我的应用程序为拨出呼叫添加了前缀,并且当呼叫结束时,我希望用户能够看到他们刚刚呼叫的人而不会看到前缀。否则,如果一个号码出现在带有前缀的通话记录中,他们将无法做到这一点——Android 不会将此号码识别为电话簿中存在的号码(假设确实如此)。所以这只是为了方便用户。
我怎么做?
我正在开发一个应用程序,它与被调用的号码一起工作——它改变了它们。通话结束后,我想更改被叫号码,用户将在“通话记录”中看到更改后的号码。
我想这样做的原因是我的应用程序为拨出呼叫添加了前缀,并且当呼叫结束时,我希望用户能够看到他们刚刚呼叫的人而不会看到前缀。否则,如果一个号码出现在带有前缀的通话记录中,他们将无法做到这一点——Android 不会将此号码识别为电话簿中存在的号码(假设确实如此)。所以这只是为了方便用户。
我怎么做?
看看这个:http: //developer.android.com/reference/android/content/ContentProvider.html。您必须实现一个 BroadcastReceiver 以便在通话结束时赶上。之后,您可以使用 update() 方法更改电话号码。CallLog 从与联系人链接的 ContentProvider 获取信息。
所以我接到了一个未接电话,还有名字。在我更改了读取的 CallState 之后。这是一个如何获取未接来电计数的示例。
private int getUnreadCallsCount()
{
if (c != null)
{
c.close();
c = null;
}
String[] projection = { CallLog.Calls.CACHED_NAME, CallLog.Calls.CACHED_NUMBER_LABEL, CallLog.Calls.TYPE };
StringBuilder where = new StringBuilder();
where.append(Calls.NEW);
where.append(" = 1 AND ");
where.append(Calls.TYPE);
where.append(" = ");
where.append(Calls.MISSED_TYPE);
c = context.getContentResolver().query(CallLog.Calls.CONTENT_URI, projection, where.toString(), null, null);
if (c != null)
{
c.moveToFirst();
return c.getCount();
}
else
return 0;
}