Android contentprovider 未返回 Phone.NUMBER

Posted

技术标签:

【中文标题】Android contentprovider 未返回 Phone.NUMBER【英文标题】:Android contentprovider not returning Phone.NUMBER 【发布时间】:2012-02-05 00:56:02 【问题描述】:

(更新)这适用于模拟器,但不适用于我的 HTC 传奇 :(

我的 ListActivity 中有以下方法,但它没有返回光标中的任何值 (getCount=0)

我不知道为什么。在我的列表中单击哪个联系人并不重要。

protected void onListItemClick(ListView l, View v, int position, long id) 
   // TODO Auto-generated method stub
   super.onListItemClick(l, v, position, id);
   Log.d(TAG,"onListItemClick");

   //get Telephone number for entry and display in Toast
   Uri phoneUri = ContentUris.withAppendedId(Phone.CONTENT_URI, id);
   Log.d(TAG,String.valueOf(phoneUri));
   String[] projection = new String[]Phone.NUMBER;


   //Get Cursor
   Cursor phoneCursor = managedQuery(phoneUri, projection, null, null, null);

   while(phoneCursor.moveToNext())
       String dspNumber;
       String number = phoneCursor.getString(phoneCursor.getColumnIndexOrThrow(Phone.NUMBER));
       if(number=="")
           dspNumber = "No number found";
       else
           dspNumber = number;
       

       Toast.makeText(this,dspNumber, 3000).show();
   
 

【问题讨论】:

您设备的 API 级别是多少? 尽量不要使用id。我的意思是尝试获取所有条目。也许问题是您使用了错误的 id 您确定您没有使用另一个表的 id,例如 raw_contact 表而不是数据表吗? 【参考方案1】:

在清单中添加Read_contacts 权限。

【讨论】:

以上是关于Android contentprovider 未返回 Phone.NUMBER的主要内容,如果未能解决你的问题,请参考以下文章

android contentprovider 有啥用

Android ContentProvider的介绍

Android_ContentProvider

Android中的ContentProvider源码解析

android-ContentProvider

Android开发实践 ContentProvider和ContentResolver