Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 18ccce64 authored by Lixin Yue's avatar Lixin Yue Committed by Jaikumar Ganesh
Browse files

PBAP only transfer contacts that are visible in contacts application.

This is to address below issue:
There have been reports by users where they are seeing contacts in the
carkit that are not present in the Contacts App UI but are present in the
database.

Bug: 2245178
Dr No: Eastham
parent 2d710220
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -24,6 +24,6 @@
    <string name="alwaysallowed">Always allowed?</string>
    <string name="defaultname">Carkit</string>
    <string name="unknownName">Unknown name</string>
    <string name="ownNumber">My phone number</string>
    <string name="localPhoneName">My name</string>
    <string name="defaultnumber">000000</string>
</resources>
+1 −1
Original line number Diff line number Diff line
@@ -427,7 +427,7 @@ public class BluetoothPbapService extends Service {
            }
            sLocalPhoneName = tm.getLine1AlphaTag();
            if (TextUtils.isEmpty(sLocalPhoneName)) {
                sLocalPhoneName = this.getString(R.string.ownNumber);
                sLocalPhoneName = this.getString(R.string.localPhoneName);
            }
        }

+15 −13
Original line number Diff line number Diff line
@@ -107,6 +107,8 @@ public class BluetoothPbapVcardManager {
    // here.
    static final String CALLLOG_SORT_ORDER = Calls._ID + " DESC";

    private static final String CLAUSE_ONLY_VISIBLE = Contacts.IN_VISIBLE_GROUP + "=1";

    public BluetoothPbapVcardManager(final Context context) {
        mContext = context;
        mResolver = mContext.getContentResolver();
@@ -140,7 +142,7 @@ public class BluetoothPbapVcardManager {
        int size = 0;
        Cursor contactCursor = null;
        try {
            contactCursor = mResolver.query(myUri, null, null, null, null);
            contactCursor = mResolver.query(myUri, null, CLAUSE_ONLY_VISIBLE, null, null);
            if (contactCursor != null) {
                size = contactCursor.getCount() + 1; // always has the 0.vcf
            }
@@ -212,11 +214,11 @@ public class BluetoothPbapVcardManager {
        Cursor contactCursor = null;
        try {
            if (orderByWhat == BluetoothPbapObexServer.ORDER_BY_INDEXED) {
                contactCursor = mResolver.query(myUri, CONTACTS_PROJECTION, null, null,
                        Contacts._ID);
                contactCursor = mResolver.query(myUri, CONTACTS_PROJECTION, CLAUSE_ONLY_VISIBLE,
                        null, Contacts._ID);
            } else if (orderByWhat == BluetoothPbapObexServer.ORDER_BY_ALPHABETICAL) {
                contactCursor = mResolver.query(myUri, CONTACTS_PROJECTION, null, null,
                        Contacts.DISPLAY_NAME);
                contactCursor = mResolver.query(myUri, CONTACTS_PROJECTION, CLAUSE_ONLY_VISIBLE,
                        null, Contacts.DISPLAY_NAME);
            }
            if (contactCursor != null) {
                for (contactCursor.moveToFirst(); !contactCursor.isAfterLast(); contactCursor
@@ -243,7 +245,7 @@ public class BluetoothPbapVcardManager {
        final Uri myUri = Phone.CONTENT_URI;
        Cursor phoneCursor = null;
        try {
            phoneCursor = mResolver.query(myUri, PHONES_PROJECTION, null, null,
            phoneCursor = mResolver.query(myUri, PHONES_PROJECTION, CLAUSE_ONLY_VISIBLE, null,
                    SORT_ORDER_PHONE_NUMBER);
            if (phoneCursor != null) {
                for (phoneCursor.moveToFirst(); !phoneCursor.isAfterLast(); phoneCursor
@@ -336,7 +338,7 @@ public class BluetoothPbapVcardManager {
        long startPointId = 0;
        long endPointId = 0;
        try {
            contactCursor = mResolver.query(myUri, CONTACTS_PROJECTION, null, null,
            contactCursor = mResolver.query(myUri, CONTACTS_PROJECTION, CLAUSE_ONLY_VISIBLE, null,
                    Contacts._ID);
            if (contactCursor != null) {
                contactCursor.moveToPosition(startPoint - 1);
@@ -358,10 +360,10 @@ public class BluetoothPbapVcardManager {

        final String selection;
        if (startPoint == endPoint) {
            selection = Contacts._ID + "=" + startPointId;
            selection = Contacts._ID + "=" + startPointId + " AND " + CLAUSE_ONLY_VISIBLE;
        } else {
            selection = Contacts._ID + ">=" + startPointId + " AND " + Contacts._ID + "<="
                    + endPointId;
                    + endPointId + " AND " + CLAUSE_ONLY_VISIBLE;
        }

        if (V) Log.v(TAG, "Query selection is: " + selection);
@@ -381,8 +383,8 @@ public class BluetoothPbapVcardManager {
        long contactId = 0;
        if (orderByWhat == BluetoothPbapObexServer.ORDER_BY_INDEXED) {
            try {
                contactCursor = mResolver.query(myUri, CONTACTS_PROJECTION, null, null,
                        Contacts._ID);
                contactCursor = mResolver.query(myUri, CONTACTS_PROJECTION, CLAUSE_ONLY_VISIBLE,
                        null, Contacts._ID);
                if (contactCursor != null) {
                    contactCursor.moveToPosition(offset - 1);
                    contactId = contactCursor.getLong(CONTACTS_ID_COLUMN_INDEX);
@@ -395,8 +397,8 @@ public class BluetoothPbapVcardManager {
            }
        } else if (orderByWhat == BluetoothPbapObexServer.ORDER_BY_ALPHABETICAL) {
            try {
                contactCursor = mResolver.query(myUri, CONTACTS_PROJECTION, null, null,
                        Contacts.DISPLAY_NAME);
                contactCursor = mResolver.query(myUri, CONTACTS_PROJECTION, CLAUSE_ONLY_VISIBLE,
                        null, Contacts.DISPLAY_NAME);
                if (contactCursor != null) {
                    contactCursor.moveToPosition(offset - 1);
                    contactId = contactCursor.getLong(CONTACTS_ID_COLUMN_INDEX);