2015-01-12 3 views
1

Я хочу получить количество контактов из списка контактов. Я следую ссылкам Stack Overflow и создаю проект. Но это не работает.Извлечение количества контактов из приложения android contact

MainActivity.java выглядит следующим образом:

package com.example.shiza.countcontacts; 

import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.Toast; 
import android.database.Cursor; 
import android.provider.ContactsContract; 


public class MainActivity extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


    } 
    public void GetTheContact() 
    { 
     Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); 

     int count = cursor.getCount(); 
     CharSequence text = "Total number is" + count; 
//    int count = 1; 
     Toast.makeText(this,text, Toast.LENGTH_LONG).show(); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

Я новичок в Android. Пожалуйста, помогите мне.

manifest.xml является:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.shiza.countcontacts" > 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
    <uses-permission android:name="android.permission.READ_CONTACTS" /> 

</manifest> 
+0

Вы пытаетесь получить номер телефона или просто количество контактов в телефоне? –

+0

Количество контактов. – user3641971

+0

Используйте следующую библиотеку https://github.com/avirepo/AndroidPhoneContacts – Avi

ответ

0

Вот полный код для вас,

package com.example.shiza.countcontacts; 

import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.Toast; 
import android.database.Cursor; 
import android.provider.ContactsContract; 


public class MainActivity extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


    } 
    public void GetTheContact() 
    { 
     Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); 
     cursor.moveToNext(); 

     int count = cursor.getCount(); 
     CharSequence text = "Total number is" + count; 
//    int count = 1; 
     Toast.makeText(this,text, Toast.LENGTH_LONG).show(); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 
+0

Просьба уточнить .. – user3641971

+0

и не забудьте указать разрешение в вашем файле манифеста проекта, '' –

0

Первый шаг, вы должны объявить разрешение на AndroidManifest

<uses-permission android:name="android.permission.READ_CONTACTS" /> 

Во-вторых, вам нужно получить доступ к списку контактов с вашего телефона и только после того, как вы сможете получить размер списка и данные от каждого контакта.

Эта ссылка предоставит вам пример Google. http://developer.android.com/training/contacts-provider/retrieve-names.html

удачи.

+0

Я включил указанное выше разрешение. – user3641971

+0

Вы прочитали ссылку и образец из Google? Вам просто нужно создать адаптер с данными из ваших контактов и задать размер списка. –

+0

Я хочу сделать то же самое. Я думаю, что я следую неправильной ссылке. Пожалуйста, дайте мне ссылку. – user3641971