Merge "Undo erroneous delete done by I94eb65c62231b5831570bb0cbbbd9c916bee0a37" into lmp-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
c8787beca6
@@ -24,13 +24,17 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.UserInfo;
|
||||
import android.database.Cursor;
|
||||
import android.location.Country;
|
||||
import android.location.CountryDetector;
|
||||
import android.net.Uri;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.provider.ContactsContract.CommonDataKinds.Callable;
|
||||
import android.provider.ContactsContract.CommonDataKinds.Phone;
|
||||
import android.provider.ContactsContract.Data;
|
||||
import android.provider.ContactsContract.DataUsageFeedback;
|
||||
import android.telecom.PhoneAccountHandle;
|
||||
import android.telephony.PhoneNumberUtils;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.android.internal.telephony.CallerInfo;
|
||||
@@ -404,7 +408,6 @@ public class CallLog {
|
||||
* @param accountHandle The accountHandle object identifying the provider of the call
|
||||
* @param start time stamp for the call in milliseconds
|
||||
* @param duration call duration in seconds
|
||||
* @param subId the subscription id.
|
||||
* @param dataUsage data usage for the call in bytes, null if data usage was not tracked for
|
||||
* the call.
|
||||
* @param addForAllUsers If true, the call is added to the call log of all currently
|
||||
@@ -503,12 +506,13 @@ public class CallLog {
|
||||
if (cursor != null) {
|
||||
try {
|
||||
if (cursor.getCount() > 0 && cursor.moveToFirst()) {
|
||||
final Uri feedbackUri = DataUsageFeedback.FEEDBACK_URI.buildUpon()
|
||||
.appendPath(cursor.getString(0))
|
||||
.appendQueryParameter(DataUsageFeedback.USAGE_TYPE,
|
||||
DataUsageFeedback.USAGE_TYPE_CALL)
|
||||
.build();
|
||||
resolver.update(feedbackUri, new ContentValues(), null, null);
|
||||
final String dataId = cursor.getString(0);
|
||||
updateDataUsageStatForData(resolver, dataId);
|
||||
if (duration >= MIN_DURATION_FOR_NORMALIZED_NUMBER_UPDATE_MS
|
||||
&& callType == Calls.OUTGOING_TYPE
|
||||
&& TextUtils.isEmpty(ci.normalizedNumber)) {
|
||||
updateNormalizedNumber(context, resolver, dataId, number);
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
cursor.close();
|
||||
@@ -581,5 +585,50 @@ public class CallLog {
|
||||
+ " LIMIT -1 OFFSET 500)", null);
|
||||
return result;
|
||||
}
|
||||
|
||||
private static void updateDataUsageStatForData(ContentResolver resolver, String dataId) {
|
||||
final Uri feedbackUri = DataUsageFeedback.FEEDBACK_URI.buildUpon()
|
||||
.appendPath(dataId)
|
||||
.appendQueryParameter(DataUsageFeedback.USAGE_TYPE,
|
||||
DataUsageFeedback.USAGE_TYPE_CALL)
|
||||
.build();
|
||||
resolver.update(feedbackUri, new ContentValues(), null, null);
|
||||
}
|
||||
|
||||
/*
|
||||
* Update the normalized phone number for the given dataId in the ContactsProvider, based
|
||||
* on the user's current country.
|
||||
*/
|
||||
private static void updateNormalizedNumber(Context context, ContentResolver resolver,
|
||||
String dataId, String number) {
|
||||
if (TextUtils.isEmpty(number) || TextUtils.isEmpty(dataId)) {
|
||||
return;
|
||||
}
|
||||
final String countryIso = getCurrentCountryIso(context);
|
||||
if (TextUtils.isEmpty(countryIso)) {
|
||||
return;
|
||||
}
|
||||
final String normalizedNumber = PhoneNumberUtils.formatNumberToE164(number,
|
||||
getCurrentCountryIso(context));
|
||||
if (TextUtils.isEmpty(normalizedNumber)) {
|
||||
return;
|
||||
}
|
||||
final ContentValues values = new ContentValues();
|
||||
values.put(Phone.NORMALIZED_NUMBER, normalizedNumber);
|
||||
resolver.update(Data.CONTENT_URI, values, Data._ID + "=?", new String[] {dataId});
|
||||
}
|
||||
|
||||
private static String getCurrentCountryIso(Context context) {
|
||||
String countryIso = null;
|
||||
final CountryDetector detector = (CountryDetector) context.getSystemService(
|
||||
Context.COUNTRY_DETECTOR);
|
||||
if (detector != null) {
|
||||
final Country country = detector.detectCountry();
|
||||
if (country != null) {
|
||||
countryIso = country.getCountryIso();
|
||||
}
|
||||
}
|
||||
return countryIso;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user