Uri.parse()为已知的Uri返回null

时间:2013-05-26 16:08:03

标签: android android-intent uri

我在Android中有一个关于Uri的问题,我正在关注一些来自朋友的代码,其中我发起了从用户那里选择联系人的意图,然后使用onActivityResult方法管理结果。

一切看起来都不错,我可以使用Uri作为第一个参数,通过查询访问联系信息。问题是试图存储该Uri以便稍后访问用户信息(在另一次执行应用程序时)。我尝试将Uri作为字符串存储,toString()getEncodedPath()返回一个看似有效的Uri但是当我尝试执行相同的代码来检索传递它的Uri解析的名称时,它返回null。 / p>

我知道一个事实,因为我之前检索过这个名字并不是空的,但我不知道我做错了什么。谢谢!

在onActivityResult 中检索名称的代码(有效):

Uri contactData = data.getData();  
Cursor lookupCursor =  this.getContentResolver().query(contactData, null, null, null, null);
if (lookupCursor.moveToFirst()) {                                       
    String lookupKey = lookupCursor.getString(lookupCursor.getColumnIndexOrThrow(android.provider.ContactsContract.PhoneLookup.LOOKUP_KEY));
           lookupCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                                        null,ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY + " LIKE '" + lookupKey + "'", null, null);  
                            if (lookupCursor.moveToFirst()) {
                                    int nameIdx = lookupCursor.getColumnIndex(Phone.DISPLAY_NAME);
                                    String name = lookupCursor.getString(nameIdx);
                            } 
                    }

在其他地方我正在执行相同的代码片段,虽然来自自定义类但是传递上下文以检索contentResolver。但是,即使复制联系人选择意图返回的确切字符串,对Uri的解析方法的调用也会返回null

我很茫然:(

0 个答案:

没有答案