Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 删除帐户后未清除联系人存储_Android_Contacts_Android Contacts - Fatal编程技术网

Android 删除帐户后未清除联系人存储

Android 删除帐户后未清除联系人存储,android,contacts,android-contacts,Android,Contacts,Android Contacts,我正在编写服务以将联系人与我的web服务同步 我通过帐户设置添加我的帐户。然后我将它与我的web服务同步。一切都好。在添加自定义帐户之前,我的设备上没有任何帐户。设备上的联系人存储应用的数据值为0.00B 同步后,“我的所有联系人”将显示在“联系人”应用程序中。联系人存储应用程序编号的数据值为4.53Mb 然后我从设备中删除我的帐户。联系人存储应用程序现在显示的数据值为3.74Mb 之后,我重新添加我的帐户,并开始再次同步它。同步完成后,联系人存储应用程序显示数据值ad 7.90Mb 如果我重复

我正在编写服务以将联系人与我的web服务同步

我通过帐户设置添加我的帐户。然后我将它与我的web服务同步。一切都好。在添加自定义帐户之前,我的设备上没有任何帐户。设备上的联系人存储应用的数据值为0.00B

同步后,“我的所有联系人”将显示在“联系人”应用程序中。联系人存储应用程序编号的数据值为4.53Mb

然后我从设备中删除我的帐户。联系人存储应用程序现在显示的数据值为3.74Mb

之后,我重新添加我的帐户,并开始再次同步它。同步完成后,联系人存储应用程序显示数据值ad 7.90Mb

如果我重复前面的步骤,请联系存储应用程序数据值将继续增长

那为什么呢?似乎我从我的网络服务下载的头像不干净

当我删除我的帐户时,如何删除它们

我添加了这样的化身:

public ContactOperations addAvatar(String avatarUrl) {
    contentValues.clear();
    if (!TextUtils.isEmpty(avatarUrl)) {
        try {
            byte[] avatar = NetworkUtils.downloadAvatar(avatarUrl);
            byte[] resizedAvatar = resizeBitmap(avatar);
            avatar = null;
            contentValues.put(Photo.PHOTO, resizedAvatar);
            contentValues.put(Photo.MIMETYPE, Photo.CONTENT_ITEM_TYPE);
            addInsertOperation();
        } catch (IOException e) {
            Log.e(ContactOperations.class.toString(), e.getMessage(), e);
        }
    }

    return this;
}

private void addInsertOperation() {
    ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
    builder.withValueBackReference(StructuredName.RAW_CONTACT_ID, 0);
    builder.withValue(ContactsContract.Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
    builder.withValues(contentValues);
    batchOperation.add(builder.build());
}
然后我调用BatchOperation类上的方法

public List<Uri> execute() {
    List<Uri> resultUris = new ArrayList<Uri>();

    if (mOperations.size() == 0) {
        return resultUris;
    }
    // Apply the mOperations to the content provider
    try {
        ContentProviderResult[] results = mResolver.applyBatch(ContactsContract.AUTHORITY,
                mOperations);
        if ((results != null) && (results.length > 0)){
            for (int i = 0; i < results.length; i++){
                resultUris.add(results[i].uri);
            }
        }
    } catch (final OperationApplicationException e1) {
        Log.e(TAG, "storing contact data failed", e1);
    } catch (final RemoteException e2) {
        Log.e(TAG, "storing contact data failed", e2);
    }
    mOperations.clear();
    return resultUris;
}