From 93018a4d983f0c7063fd0b243436364cd191e0a9 Mon Sep 17 00:00:00 2001 From: Roshan Pius Date: Mon, 13 Jul 2015 12:57:40 -0700 Subject: Handle exceptions when accessing Content providers. BUG: 21638129 Change-Id: I88f7dcf67e395f49136a1f434fbd9c75e15cddad --- telephony/java/android/telephony/PhoneNumberUtils.java | 16 ++++++++++------ .../java/com/android/internal/telephony/CallerInfo.java | 16 ++++++++++++---- 2 files changed, 22 insertions(+), 10 deletions(-) (limited to 'telephony') diff --git a/telephony/java/android/telephony/PhoneNumberUtils.java b/telephony/java/android/telephony/PhoneNumberUtils.java index d18b86a..79146f3 100644 --- a/telephony/java/android/telephony/PhoneNumberUtils.java +++ b/telephony/java/android/telephony/PhoneNumberUtils.java @@ -177,15 +177,19 @@ public class PhoneNumberUtils phoneColumn = ContactsContract.CommonDataKinds.Phone.NUMBER; } - final Cursor c = context.getContentResolver().query(uri, new String[] { - phoneColumn - }, null, null, null); - if (c != null) { - try { + Cursor c = null; + try { + c = context.getContentResolver().query(uri, new String[] { phoneColumn }, + null, null, null); + if (c != null) { if (c.moveToFirst()) { number = c.getString(c.getColumnIndex(phoneColumn)); } - } finally { + } + } catch (RuntimeException e) { + Rlog.e(LOG_TAG, "Error getting phone number.", e); + } finally { + if (c != null) { c.close(); } } diff --git a/telephony/java/com/android/internal/telephony/CallerInfo.java b/telephony/java/com/android/internal/telephony/CallerInfo.java index 5cd5d4e..be7e702 100644 --- a/telephony/java/com/android/internal/telephony/CallerInfo.java +++ b/telephony/java/com/android/internal/telephony/CallerInfo.java @@ -16,6 +16,7 @@ package com.android.internal.telephony; +import android.content.ContentResolver; import android.content.Context; import android.database.Cursor; import android.graphics.Bitmap; @@ -282,10 +283,17 @@ public class CallerInfo { * number. The returned CallerInfo is null if no number is supplied. */ public static CallerInfo getCallerInfo(Context context, Uri contactRef) { - - return getCallerInfo(context, contactRef, - CallerInfoAsyncQuery.getCurrentProfileContentResolver(context) - .query(contactRef, null, null, null, null)); + CallerInfo info = null; + ContentResolver cr = CallerInfoAsyncQuery.getCurrentProfileContentResolver(context); + if (cr != null) { + try { + info = getCallerInfo(context, contactRef, + cr.query(contactRef, null, null, null, null)); + } catch (RuntimeException re) { + Rlog.e(TAG, "Error getting caller info.", re); + } + } + return info; } /** -- cgit v1.1