0

特定の連絡先番号をお気に入り (スター付き) としてマークしようとしています。そのために、次のクエリを使用しています。

    String selectPhone = Phone._ID + "=?";
    String[] phoneArgs = new String[]{ NUMBER_ID }; 
    ContentValues values = new ContentValues();
    values.put(Phone.STARRED, 0);

    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
    ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI)
            .withSelection(selectPhone, phoneArgs)
            .withValue(Phone.STARRED, 1)
            .build()); 
    try {
        getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
    } catch (RemoteException e) {
        e.printStackTrace();
    } catch (OperationApplicationException e) {
        e.printStackTrace();
    }

上記のコードは例外をスローしていませんが、データベースも更新していません。解決策があれば教えてください。前もって感謝します !!

4

2 に答える 2

2

これを実行して、特定の連絡先をスター付きとしてマークします。

ContentValues values = new ContentValues();
        String[] fv = new String[] { "Juned" };
        values.put(Contacts.STARRED, 1);
        getContentResolver().update(Contacts.CONTENT_URI, values,
                Contacts.DISPLAY_NAME + "= ?", fv);

この行の 2 番目のパラメータを 1 から 0 に変更するだけでvalues.put(Contacts.STARRED, 1);、スター付きの連絡先をお気に入りから外せます。

于 2012-11-22T12:24:43.943 に答える
0

"Starred" プロパティは Contact エンティティに属します。少なくとも、これは ContactsContract.class 定義から取得したものです。私は次のようなコードを使用します:

ops.add(ContentProviderOperation.newUpdate(ContactsContract.RawContacts.CONTENT_URI)
                    .withSelection(ContactsContract.Data._ID + " = ?",
                            new String[]{contactRawId})
                    .withValue(ContactsContract.Contacts.STARRED, isFavorite ? 1 : 0)
                    .build());

パラメータは (int)contactRawId、(boolean)isFavorite です。

于 2019-05-12T16:50:52.830 に答える