Get specific contact information from URI returned from Intent.ACTION_PICK

后端 未结 3 1859
半阙折子戏
半阙折子戏 2020-12-05 08:25

I am writing an Android app that has a data type that represents a person (specifically, the parent or guardian of a child). I\'d like to be able to \"import\" the relevant

3条回答
  •  醉酒成梦
    2020-12-05 08:32

    //Add a permission to read contacts data to your application manifest.
    
    
    //Use Intent.ACTION_PICK in your Activity 
    Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,
                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
            startActivityForResult(contactPickerIntent, RESULT_PICK_CONTACT);
    
    //Then Override the onActivityResult() and retrieve the ID,Phone number and Name in the data. 
     @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            // check whether the result is ok
            if (resultCode == RESULT_OK) {
                // Check for the request code, we might be usign multiple startActivityForReslut
                switch (requestCode) {
                case RESULT_PICK_CONTACT:
                   Cursor cursor = null;
            try {
                String phoneNo = null ;
                String name = null;           
                Uri uri = data.getData();            
                cursor = getContentResolver().query(uri, null, null, null, null);
                cursor.moveToFirst();           
                int  phoneIndex =cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
                phoneNo = cursor.getString(phoneIndex); 
                textView2.setText(phoneNo);
            } catch (Exception e) {
                e.printStackTrace();
            }
                    break;
                }
            } else {
                Log.e("MainActivity", "Failed to pick contact");
            }
        }
    

    Note: Before Android 2.3 (API level 9), performing a query on the Contacts Provider (like the one shown above) requires that your app declare the READ_CONTACTS permission (see Security and Permissions). However, beginning with Android 2.3, the Contacts/People app grants your app a temporary permission to read from the Contacts Provider when it returns you a result. The temporary permission applies only to the specific contact requested, so you cannot query a contact other than the one specified by the intent's Uri, unless you do declare the READ_CONTACTS permission.

提交回复
热议问题