我正在尝试从内容提供商读取短信。我有以下代码
Uri uri = Uri.parse(SMS_URI_INBOX);
String whereClause = "address=?";
String[] whereArgs = {address};
String[] projection = new String[] { "*" };
Cursor cur = getContentResolver().query(uri, projection, whereClause,whereArgs, "date desc");
除非出现各种格式的地址,否则一切都工作正常。一种地址类型可以用各种方式表示,例如“ +9198765443210”,“ + 91 987
65443210”,“ + 91(987)65443210”,“ 098765443210”等。这些类型的不同地址格式驻留在SMS内容提供程序中也一样
方法1 :
最初,我将所有地址转换为特殊字符替换为%的格式,例如
+9198765443210->%98765443210%
+91 987 65443210->%987%65443210%
,然后使用, String whereClause = "address LIKE ?";
但失败, 因为可能来触发查询,address LIKE %98765443210%
但SMS内容提供程序中的地址为+91
98765443210。android中
是否存在诸如normalized_address之类的东西,我们可以用来从SMS内容提供程序中获取数据?
附加到@MikeM。注释,下面的一段代码帮助我获取了我在SMS内容提供程序中进行查询所使用的threadId
//Getting thread Id
ContentResolver mContentResolver = context.getContentResolver();
Uri uriSmsURI1 = Uri.withAppendedPath(Telephony.MmsSms.CONTENT_FILTER_BYPHONE_URI, address);
String[] projection1 = {this.threadId};
Cursor c1 = dbService.query(mContentResolver, uriSmsURI1, projection1, null, null, null);
if(c1.getCount()==0) {
log.error(methodName, "Got count: "+c1.getCount()+" While looking for ThreadID");
return null;
}
String threadId = null;
while(c1.moveToNext()){
threadId = c1.getString(c1.getColumnIndexOrThrow(this.threadId));
}
c1.close();
问题内容: 我正在尝试从通话记录中获取联系人。我可以使用以下代码从主要联系人获取联系电话: 它的作用是,当我们单击“联系人”按钮时,它将打开一个包含所有联系人的列表,用户可以选择任何联系人,并且所选联系人将添加到“收件人”字段中。我想做完全相同的事情,但是我不想显示所有联系人,而是只显示最近使用过的那些(呼叫记录)进行选择的联系人。 如果您还可以告诉如何与组一起执行此操作,那也很好。 问题答案
问题内容: 我想在Android中分别阅读所有SIM卡联系人和电话联系人。我进行了搜索,发现很多人对此有疑问,但我找不到任何解决方案。我在这里喜欢一些答案,但这对我不起作用。当我测试它给我谷歌联系人: 但是当我测试时,它并没有给我SIM卡联系人: 然后我发现RawContacts是在此处由同步适配器创建的联系人。那可能是问题所在。有谁能告诉我 所有simcontacts 所有电话联络人 谢谢。 问
我是一个新的android和工作的应用程序,我需要所有的去话日志,号码,通话时长和姓名的联系人。所以我的问题是,我能为android系统的calllog.calls.content_uri表获取传出呼叫的名称和号码吗?或者我需要从单独的表中读取它并映射它。下面是我的代码。提前道谢。
我有一个包含5个字段(列)的csv文件。在5列中,我只想读第二列和第四列,这是进一步处理所需的。现在我正在使用opencsv api的readAll()方法进行读取。通过使用这种方法,我必须处理所有列,以获得第二列和第四列的值。 有没有办法读取所需列的值,即从csv文件中读取第二个和第四个值? 这是正确的方法还是我应该使用其他方法?
问题内容: 是否可以在一个查询中完成? 据我所知sim联系人的内容uri是 问题答案: 这很容易!:)
问题内容: 我正在使用一个简单的短信应用程序,正在使用以下代码在加载线程列表时获取线程ID,但是我不知道如何使用线程ID获取联系人ID。我是root用户,并且使用root资源管理器,我可以在数据库中看到一个带有以下各列的联系人表 因此,由于我具有线程ID,因此我应该能够获取联系人ID,但我还需要确保该方法在所有设备上均有效。我的应用不是root用户 获取线程ID的代码 问题答案: 我恢复所有联系人