我正在開發一個應用程序,它使用那些被調用的號碼 - 它改變它們。通話結束後,我想更改一個被呼叫的號碼,用戶將在「通話記錄」中看到更改的號碼。當通話結束時更改號碼
原因我想這樣做是因爲我的應用程序爲傳出呼叫添加了前綴,當通話結束時,我希望用戶能夠看到他們剛剛呼叫而不看到前綴。否則,如果一個號碼會以前綴來到呼叫日誌,他們將無法做到這一點 - 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;
}
我應該從那裏得到什麼? –
CallLog.Calls.NUMBER我編輯我的答案添加一個例子。 – 2013-07-08 02:22:59
聽起來像是應該完全禁止出於安全原因的東西,並不會給尋找解決方案帶來多少希望。 – Gustek
@MartinJames,不,我的主要人。 –