在android中以编程方式更新联系人姓名会导致模拟器中出现illegalargumentexception

问题描述 投票:2回答:1

在开始之前,我知道我在代码中使用已弃用的API调用来管理联系人,这是因为我试图扩展现有的库而不必对其进行太多更改。我不介意改变它,但那里有太多东西,我只是尝试一个想法,不想再写一个完整的框架。

所以现在回答这个问题,我正在尝试更新联系人,但到目前为止我还没有到达任何地方。我可以创建和删除联系人。它们都在模拟器中工作。我实际上得到了一个非法的例子:当我尝试更新时,空值信息。相关代码如下。

Uri uri = Uri.parse(fullUri);
ContentValues updateValues = new ContentValues();
// updateValues.put(Contacts.People.DISPLAY_NAME, value);
updateValues.put(Contacts.People.NAME, value);
contentResolver.update(uri, updateValues, null, null);

以下是我的堆栈跟踪

12-30 00:45:05.819: RpcServer:101(2592): java.lang.IllegalArgumentException: Empty values
12-30 00:45:05.819: RpcServer:101(2592):    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:170)
12-30 00:45:05.819: RpcServer:101(2592):    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140)
12-30 00:45:05.819: RpcServer:101(2592):    at android.content.ContentProviderProxy.update(ContentProviderNative.java:507)
12-30 00:45:05.819: RpcServer:101(2592):    at android.content.ContentResolver.update(ContentResolver.java:990)
12-30 00:45:05.819: RpcServer:101(2592):    at com.fun.rpc.SimpleServer$ConnectionThread.run(SimpleServer.java:91)

以前有人见过这个问题吗?我尝试将ID作为where子句的一部分发送,但也不起作用。此外,如果我尝试更新电子邮件地址,代码不会引发任何错误,但联系人的电子邮件地址不会更新。但是当我尝试更新名称时,我得到上面的错误。有什么提示或想法吗?如果您需要更多信息,请告诉我。

干杯

java android contacts illegalargumentexception
1个回答
0
投票

我参加晚会很晚,但我的答案如下。

我遇到了同样的错误。

java.lang.IllegalArgumentException: Empty values
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:165)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
at android.content.ContentProviderProxy.update(ContentProviderNative.java:572)
at android.content.ContentResolver.update(ContentResolver.java:1672)
...

当我尝试更改MediaStore.Images.Media.BUCKET_ID字段时遇到了同样的错误。虽然字段MediaStore.Images.Media.DESCRIPTION没有问题改变。

正如您可能猜到的那样,BUCKET_ID字段可用作多个表的关键字段。如果你知道数据库开发的理论。因此,不允许更改这些关键字段。

在你的情况下,这样一个(受保护的)字段是Contacts.People.NAME

UPD。从src:

图像的桶ID。这是一个只读属性,可以从DATA列自动计算。

© www.soinside.com 2019 - 2024. All rights reserved.