2012-05-22 60 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'不存在 –

相關問題