diff options
author | Roman Birg <roman@cyngn.com> | 2014-11-12 17:01:47 -0800 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2015-11-16 19:53:26 -0800 |
commit | ebf9df8c856a3f43f1323ab8f97c8060c53f3990 (patch) | |
tree | 8c567cbd109c3a87b45d69ba1f642091b36b388e | |
parent | b5478f99a71f65c84f4664aad86eb9fee5d5e3ca (diff) | |
download | android_packages_apps_Dialer-ebf9df8c856a3f43f1323ab8f97c8060c53f3990.tar.gz android_packages_apps_Dialer-ebf9df8c856a3f43f1323ab8f97c8060c53f3990.tar.bz2 android_packages_apps_Dialer-ebf9df8c856a3f43f1323ab8f97c8060c53f3990.zip |
Dialer: add blacklist call logging (3/3)
Change-Id: Ie569981381d46c8946a603795fe072df106546b0
Signed-off-by: Roman Birg <roman@cyngn.com>
Allow blacklisting calls from call log detail menu.
Change-Id: Iac19f1327780b844628d196299b68c031ba47df2
Dialer: blacklisted call tweaks
* Make icon like the missed call icon, but black.
* Also list blacklisted calls in missed calls tab
Change-Id: I0b68325b66b12988f24ff9e4b9570e17f40234b7
Signed-off-by: Roman Birg <roman@cyngn.com>
-rw-r--r-- | AndroidManifest.xml | 2 | ||||
-rw-r--r-- | res/menu/call_details_options.xml | 2 | ||||
-rw-r--r-- | res/values/cm_strings.xml | 4 | ||||
-rw-r--r-- | res/values/colors.xml | 3 | ||||
-rw-r--r-- | src/com/android/dialer/CallDetailActivity.java | 3 | ||||
-rw-r--r-- | src/com/android/dialer/calllog/CallLogQueryHandler.java | 6 | ||||
-rwxr-xr-x[-rw-r--r--] | src/com/android/dialer/calllog/CallTypeHelper.java | 6 | ||||
-rwxr-xr-x[-rw-r--r--] | src/com/android/dialer/calllog/CallTypeIconsView.java | 14 | ||||
-rw-r--r-- | src/com/android/dialer/calllog/ContactInfoHelper.java | 31 |
9 files changed, 70 insertions, 1 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 06182b10a..af9190fcf 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -53,6 +53,8 @@ <uses-permission android:name="com.android.voicemail.permission.READ_VOICEMAIL" /> <uses-permission android:name="android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK" /> <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/> + <uses-permission android:name="android.permission.READ_PHONE_BLACKLIST" /> + <uses-permission android:name="android.permission.CHANGE_PHONE_BLACKLIST" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.BROADCAST_STICKY" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> diff --git a/res/menu/call_details_options.xml b/res/menu/call_details_options.xml index f08b4facd..6edeb95db 100644 --- a/res/menu/call_details_options.xml +++ b/res/menu/call_details_options.xml @@ -31,4 +31,6 @@ <item android:id="@+id/menu_report" android:title="@string/call_detail_menu_report" /> + <item android:id="@+id/menu_add_to_blacklist" + android:title="@string/menu_add_to_blacklist" /> </menu> diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml index 445c1465f..597e79051 100644 --- a/res/values/cm_strings.xml +++ b/res/values/cm_strings.xml @@ -37,4 +37,8 @@ <string name="cyngn_reverse_lookup_provider_name">Cyngn Chinese (CN)</string> <string name="cyngn_reverse_lookup_provider_value" translatable="false">CyngnChinese</string> + <!-- Description for incoming calls that were blacklisted --> + <string name="type_blacklist">Blacklisted call</string> + <string name="menu_add_to_blacklist">Add to blocked caller list</string> + <string name="toast_added_to_blacklist">%s added to blocked caller list.</string> </resources> diff --git a/res/values/colors.xml b/res/values/colors.xml index f72ad3bd5..62580f5bd 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -89,6 +89,9 @@ <!-- Color for missed call icons. --> <color name="missed_call">#ff2e58</color> + <!-- Color for blacklist call icons. --> + <color name="blacklisted_call">#ff000000</color> + <!-- Color for answered or outgoing call icons. --> <color name="answered_call">@color/dialer_green_highlight_color</color> diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java index 56f2cb1dc..da86bd98b 100644 --- a/src/com/android/dialer/CallDetailActivity.java +++ b/src/com/android/dialer/CallDetailActivity.java @@ -365,6 +365,9 @@ public class CallDetailActivity extends Activity CallLogAsyncTaskUtil.deleteVoicemail( this, mVoicemailUri, mCallLogAsyncTaskListener); break; + case R.id.menu_add_to_blacklist: + mContactInfoHelper.addNumberToBlacklist(mNumber); + break; } return true; } diff --git a/src/com/android/dialer/calllog/CallLogQueryHandler.java b/src/com/android/dialer/calllog/CallLogQueryHandler.java index 60bdcff46..aceca62aa 100644 --- a/src/com/android/dialer/calllog/CallLogQueryHandler.java +++ b/src/com/android/dialer/calllog/CallLogQueryHandler.java @@ -169,6 +169,12 @@ public class CallLogQueryHandler extends NoNullCursorAsyncQueryHandler { where.append(" AND "); where.append(String.format("(%s = ?)", Calls.TYPE)); selectionArgs.add(Integer.toString(callType)); + if (callType == Calls.MISSED_TYPE) { + // also query for blacklisted calls as they are 'missed' + where.append(" OR "); + where.append(String.format("(%s = ?)", Calls.TYPE)); + selectionArgs.add(Integer.toString(Calls.BLACKLIST_TYPE)); + } } else { where.append(" AND NOT "); where.append("(" + Calls.TYPE + " = " + Calls.VOICEMAIL_TYPE + ")"); diff --git a/src/com/android/dialer/calllog/CallTypeHelper.java b/src/com/android/dialer/calllog/CallTypeHelper.java index 36c0975bd..3603ce6c3 100644..100755 --- a/src/com/android/dialer/calllog/CallTypeHelper.java +++ b/src/com/android/dialer/calllog/CallTypeHelper.java @@ -39,6 +39,8 @@ public class CallTypeHelper { private final CharSequence mMissedVideoName; /** Name used to identify voicemail calls. */ private final CharSequence mVoicemailName; + /** Name used to identify blacklisted calls */ + private final CharSequence mBlacklistedName; /** Color used to identify new missed calls. */ private final int mNewMissedColor; /** Color used to identify new voicemail calls. */ @@ -53,6 +55,7 @@ public class CallTypeHelper { mOutgoingVideoName = resources.getString(R.string.type_outgoing_video); mMissedVideoName = resources.getString(R.string.type_missed_video); mVoicemailName = resources.getString(R.string.type_voicemail); + mBlacklistedName = resources.getText(R.string.type_blacklist); mNewMissedColor = resources.getColor(R.color.call_log_missed_call_highlight_color); mNewVoicemailColor = resources.getColor(R.color.call_log_voicemail_highlight_color); } @@ -84,6 +87,9 @@ public class CallTypeHelper { case Calls.VOICEMAIL_TYPE: return mVoicemailName; + case Calls.BLACKLIST_TYPE: + return mBlacklistedName; + default: return mMissedName; } diff --git a/src/com/android/dialer/calllog/CallTypeIconsView.java b/src/com/android/dialer/calllog/CallTypeIconsView.java index 31d4f4b0e..686336283 100644..100755 --- a/src/com/android/dialer/calllog/CallTypeIconsView.java +++ b/src/com/android/dialer/calllog/CallTypeIconsView.java @@ -40,7 +40,7 @@ import java.util.List; * for ListView-recycling that a regular LinearLayout using ImageViews. */ public class CallTypeIconsView extends View { - private List<Integer> mCallTypes = Lists.newArrayListWithCapacity(3); + private List<Integer> mCallTypes = Lists.newArrayListWithCapacity(4); private boolean mShowVideo = false; private Resources mResources; private int mWidth; @@ -114,6 +114,9 @@ public class CallTypeIconsView extends View { return mResources.missed; case Calls.VOICEMAIL_TYPE: return mResources.voicemail; + case Calls.BLACKLIST_TYPE: + return mResources.blacklist; + default: // It is possible for users to end up with calls with unknown call types in their // call history, possibly due to 3rd party call log implementations (e.g. to @@ -176,10 +179,16 @@ public class CallTypeIconsView extends View { public final Drawable videoCall; /** + * Drawable representing blacklisted call. + */ + public final Drawable blacklist; + + /** * The margin to use for icons. */ public final int iconMargin; + /** * Configures the call icon drawables. * A single white call arrow which points down and left is used as a basis for all of the @@ -202,6 +211,9 @@ public class CallTypeIconsView extends View { missed = r.getDrawable(R.drawable.ic_call_arrow).mutate(); missed.setColorFilter(r.getColor(R.color.missed_call), PorterDuff.Mode.MULTIPLY); + blacklist = r.getDrawable(R.drawable.ic_call_arrow).mutate(); + blacklist.setColorFilter(r.getColor(R.color.blacklisted_call), PorterDuff.Mode.MULTIPLY); + voicemail = r.getDrawable(R.drawable.ic_call_voicemail_holo_dark); // Get the video call icon, scaled to match the height of the call arrows. diff --git a/src/com/android/dialer/calllog/ContactInfoHelper.java b/src/com/android/dialer/calllog/ContactInfoHelper.java index 4e2fe5c1d..2ecf65f22 100644 --- a/src/com/android/dialer/calllog/ContactInfoHelper.java +++ b/src/com/android/dialer/calllog/ContactInfoHelper.java @@ -25,14 +25,18 @@ import android.provider.ContactsContract.CommonDataKinds.Phone; import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.DisplayNameSources; import android.provider.ContactsContract.PhoneLookup; +import android.provider.Settings; +import android.provider.Telephony; import android.telephony.PhoneNumberUtils; import android.text.TextUtils; import android.util.Log; +import android.widget.Toast; import com.android.contacts.common.util.Constants; import com.android.contacts.common.util.PermissionsUtil; import com.android.contacts.common.util.PhoneNumberHelper; import com.android.contacts.common.util.UriUtils; +import com.android.dialer.R; import com.android.dialer.lookup.LookupCache; import com.android.dialer.service.CachedNumberLookupService; import com.android.dialer.service.CachedNumberLookupService.CachedContactInfo; @@ -443,5 +447,32 @@ public class ContactInfoHelper { && mCachedNumberLookupService.canReportAsInvalid(sourceType, objectId); } + /** + * Checks whether calls can be blacklisted; that is, whether the + * phone blacklist is enabled + */ + public boolean canBlacklistCalls() { + return Settings.System.getInt(mContext.getContentResolver(), + Settings.System.PHONE_BLACKLIST_ENABLED, 1) != 0; + } + + /** + * Requests the given number to be added to the phone blacklist + * + * @param number the number to be blacklisted + */ + public void addNumberToBlacklist(String number) { + ContentValues cv = new ContentValues(); + cv.put(Telephony.Blacklist.PHONE_MODE, 1); + + Uri uri = Uri.withAppendedPath(Telephony.Blacklist.CONTENT_FILTER_BYNUMBER_URI, number); + int count = mContext.getContentResolver().update(uri, cv, null, null); + + if (count != 0) { + // Give the user some feedback + String message = mContext.getString(R.string.toast_added_to_blacklist, number); + Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show(); + } + } } |