2012-05-22 25 views
1
import android.app.Activity; 
import android.content.ContentResolver; 
import android.content.Intent; 
import android.database.Cursor; 
import android.net.Uri; 
import android.os.Bundle; 
import android.provider.Contacts.People; 
import android.provider.ContactsContract; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class ImportContactsActivity extends Activity { 
/** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Button pickContact = (Button) findViewById(R.id.contacts); 
     pickContact.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 

       Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
       startActivityForResult(intent, 1); 
      } 
     }); 
    } 

    public void onActivityResult(int reqCode, int resultCode, Intent data) { 

     super.onActivityResult(reqCode, resultCode, data); 

     switch (reqCode) { 
     case (1) : 
      if (resultCode == Activity.RESULT_OK) { 
       Uri contactData = data.getData(); 
       Cursor cursor = managedQuery(contactData, null, null, null, null); 
       ContentResolver cr = getContentResolver(); 
       Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
       if (cur.getCount() > 0) { 
        while (cur.moveToNext()) { 
         String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
         String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
         if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 
          Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
              ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
              new String[]{id}, null); 
          while (pCur.moveToNext()) { 
           // Do something with phones 
           TextView contactView = (TextView) findViewById(R.id.contactView); 
           contactView.setText(name.toString()); 
         } 
          pCur.close(); 
         } 
        } 
       } 
       cursor.moveToFirst(); 
       String number = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.)); 

       TextView contactView = (TextView) findViewById(R.id.contactView); 
       contactView.setText(number.toString()); 
      } 
      break; 
     } 
    } 
} 

我打算将手机联系人导入到应用程序中,一旦用户点击按钮,手机联系人列表就会显示出来,一旦用户点击其中一个联系人,联系人就会被选中,数字将显示在textview上。但是当我点击联系人时,发生错误如何检索选定联系人中的号码?

java.lang.RuntimeException:传递结果失败ResultInfo {who = null,request = 1,result = -1,data = Intent {dat = content:// com。 android.contacts/contacts/lookup/0r1-3F4927292B/1 flg = 0x1}} to activity {com.example.importcontacts/com.example.importcontacts.ImportContactsActivity}:java.lang.SecurityException:Permission Denial:reading com.android。 providers.contacts.ContactsProvider2 URI内容:由PID = 609 //com.android.contacts/contacts,UID = 10053需要android.permission.READ_CONTACTS

请咨询我的编码,感谢

回答

0

好像你忘了添加READ_CONTACTS权限离子在清单文件

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

ContactsContract.Contacts.XX,我应该取代XX为了检索电话号码? –

+0

您可能会发现以下链接有用http://stackoverflow.com/questions/2356084/read-all-contacts-phone-numbers-in-android http://developer.android.com/resources/articles/contacts.html – bughi

+0

我试过用这个 String number = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER)); 但我仍然得到这个错误: java.lang.RuntimeException:传递结果失败ResultInfo {who = null,request = 1,result = -1,data = Intent {dat = content://com.android.contacts/ contacts/lookup/0r3-3F49555759/3 flg = 0x1}}到activity {com.example.antitheft/com.example.antitheft.PhoneNumActivity}:java.lang.IllegalArgumentException:列'data1'不存在 –

相关问题