Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.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
如何从ContactsContract Android获取电话号码?_Android_Android Contacts_Contactscontract - Fatal编程技术网

如何从ContactsContract Android获取电话号码?

如何从ContactsContract Android获取电话号码?,android,android-contacts,contactscontract,Android,Android Contacts,Contactscontract,有人能澄清一下我是如何输入电话号码的,而不是通过Contacts.Contacts.HAS\u phone\u号码检查是否有电话号码的吗。我尝试了ContractsContract.CommonKinds.Phone.NUMBER替换的是电话号码,但它继续崩溃。下面的代码适用于您的电话号码 公共类ContactListActivity扩展了ListActivity{ 私有游标 @Override public void onCreate(Bundle icicle) { super.on

有人能澄清一下我是如何输入电话号码的,而不是通过Contacts.Contacts.HAS\u phone\u号码检查是否有电话号码的吗。我尝试了ContractsContract.CommonKinds.Phone.NUMBER替换的是电话号码,但它继续崩溃。下面的代码适用于您的电话号码

公共类ContactListActivity扩展了ListActivity{ 私有游标

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);

    /*

   ContactListCursorAdapter adapter = new ContactListCursorAdapter(getApplicationContext(), R.layout.contact_list_view,  cursor, from, to);
   setListAdapter(adapter);
   */
    setContentView(R.layout.settings);

    Cursor cur = getContacts();

    ListView lv = (ListView)findViewById(android.R.id.list);
    //String[] from = new String[] {ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts.HAS_PHONE_NUMBER,ContactsContract.Contacts._ID};
   // int[] to = new int[] {R.id.checkBox};

   String[] fields = new String[] {ContactsContract.Data.DISPLAY_NAME, ContactsContract.Contacts.HAS_PHONE_NUMBER};

   SimpleCursorAdapter adapter = 
            new SimpleCursorAdapter(this, 
                                    R.layout.contact_list_item,
                                    cur,
                                    fields,
                                    new int[] {R.id.cbContact, R.id.tvPhoneNo});
      lv.setAdapter(adapter);      

}

 private Cursor getContacts() {  
        // Run query     
        Uri uri = ContactsContract.Contacts.CONTENT_URI;

        String[] projection = 
                new String[]{ ContactsContract.Contacts._ID,
                              ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.HAS_PHONE_NUMBER}; 
            String selection = null;
            String[] selectionArgs = null;  
            String sortOrder = ContactsContract.Contacts.DISPLAY_NAME +
                " COLLATE LOCALIZED ASC";  
            return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
    }
@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);

    /*

   ContactListCursorAdapter adapter = new ContactListCursorAdapter(getApplicationContext(), R.layout.contact_list_view,  cursor, from, to);
   setListAdapter(adapter);
   */
    setContentView(R.layout.settings);

    Cursor cur = getContacts();

    ListView lv = (ListView)findViewById(android.R.id.list);
    //String[] from = new String[] {ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts.HAS_PHONE_NUMBER,ContactsContract.Contacts._ID};
   // int[] to = new int[] {R.id.checkBox};

   String[] fields = new String[] {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER};

   SimpleCursorAdapter adapter = 
            new SimpleCursorAdapter(this, 
                                    R.layout.contact_list_item,
                                    cur,
                                    fields,
                                    new int[] {R.id.cbContact, R.id.tvPhoneNo});
      lv.setAdapter(adapter);      

}

 private Cursor getContacts() {  
        // Run query     
        Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;

        String[] projection = 
                new String[]{ ContactsContract.CommonDataKinds.Phone._ID,
                ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER}; 
            String selection = null;
            String[] selectionArgs = null;  
            String sortOrder = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME +
                " COLLATE LOCALIZED ASC";  
            return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
    }

}

我已使用此代码从通话记录中检索到电话号码

Cursor cursor = contentResolver.query(uri, null, selection, selectionArgs,"date DESC");

  if (cursor != null && cursor.getCount() > 0) 
                { 
                 while (cursor.moveToNext()) 
                  { 

   phNumber = cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER));

                      callDuration = cursor.getString(cursor.getColumnIndex(CallLog.Calls.DURATION));
                      dur = Integer.parseInt(callDuration);

 } 
               }  

              cursor.close();

希望这将对您有所帮助。

通过使用ContactsContract.CommonDataTypes.Phone.CONTENT\u URI而不是ContactsContract解决,如下代码所示:

公共类ContactListActivity扩展了ListActivity{ 私有游标

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);

    /*

   ContactListCursorAdapter adapter = new ContactListCursorAdapter(getApplicationContext(), R.layout.contact_list_view,  cursor, from, to);
   setListAdapter(adapter);
   */
    setContentView(R.layout.settings);

    Cursor cur = getContacts();

    ListView lv = (ListView)findViewById(android.R.id.list);
    //String[] from = new String[] {ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts.HAS_PHONE_NUMBER,ContactsContract.Contacts._ID};
   // int[] to = new int[] {R.id.checkBox};

   String[] fields = new String[] {ContactsContract.Data.DISPLAY_NAME, ContactsContract.Contacts.HAS_PHONE_NUMBER};

   SimpleCursorAdapter adapter = 
            new SimpleCursorAdapter(this, 
                                    R.layout.contact_list_item,
                                    cur,
                                    fields,
                                    new int[] {R.id.cbContact, R.id.tvPhoneNo});
      lv.setAdapter(adapter);      

}

 private Cursor getContacts() {  
        // Run query     
        Uri uri = ContactsContract.Contacts.CONTENT_URI;

        String[] projection = 
                new String[]{ ContactsContract.Contacts._ID,
                              ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.HAS_PHONE_NUMBER}; 
            String selection = null;
            String[] selectionArgs = null;  
            String sortOrder = ContactsContract.Contacts.DISPLAY_NAME +
                " COLLATE LOCALIZED ASC";  
            return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
    }
@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);

    /*

   ContactListCursorAdapter adapter = new ContactListCursorAdapter(getApplicationContext(), R.layout.contact_list_view,  cursor, from, to);
   setListAdapter(adapter);
   */
    setContentView(R.layout.settings);

    Cursor cur = getContacts();

    ListView lv = (ListView)findViewById(android.R.id.list);
    //String[] from = new String[] {ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts.HAS_PHONE_NUMBER,ContactsContract.Contacts._ID};
   // int[] to = new int[] {R.id.checkBox};

   String[] fields = new String[] {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER};

   SimpleCursorAdapter adapter = 
            new SimpleCursorAdapter(this, 
                                    R.layout.contact_list_item,
                                    cur,
                                    fields,
                                    new int[] {R.id.cbContact, R.id.tvPhoneNo});
      lv.setAdapter(adapter);      

}

 private Cursor getContacts() {  
        // Run query     
        Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;

        String[] projection = 
                new String[]{ ContactsContract.CommonDataKinds.Phone._ID,
                ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER}; 
            String selection = null;
            String[] selectionArgs = null;  
            String sortOrder = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME +
                " COLLATE LOCALIZED ASC";  
            return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
    }

}

非常感谢您的帮助!:D我刚刚意识到我的错误,并已将已解决的代码张贴在上面。