首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在OnCreate() Android中调用联系人的onActivityResult

在OnCreate() Android中调用联系人的onActivityResult
EN

Stack Overflow用户
提问于 2013-04-19 17:15:07
回答 2查看 712关注 0票数 0

这段代码来自另一个问题,但是我不知道如何在我的onCreate()活动中调用这个onActivityResult()类来显示来自我手机的第一个联系人。另外,"if (requestCode == RQS_PICKCONTACT){“和"RQS_PICKCONTACT”代表什么?有人能澄清一下吗?

代码语言:javascript
代码运行次数:0
运行
复制
public class MainActivity extends Activity {

    Button buttonReadContact;
    TextView textPhone;

    final int RQS_PICKCONTACT = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        buttonReadContact = (Button)findViewById(R.id.readcontact);
        textPhone = (TextView)findViewById(R.id.phone);

        buttonReadContact.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                //Start activity to get contact
                /*final Uri uriContact = ContactsContract.Contacts.CONTENT_URI;
                Intent intentPickContact = new Intent(Intent.ACTION_PICK, uriContact);
                startActivityForResult(intentPickContact, RQS_PICKCONTACT);
                */
                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
                // BoD con't: CONTENT_TYPE instead of CONTENT_ITEM_TYPE
                intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
                startActivityForResult(intent, RQS_PICKCONTACT); 
            }});

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        if (resultCode == RESULT_OK) {
            if(requestCode == RQS_PICKCONTACT) {
                Uri returnUri = data.getData();
                Cursor cursor = getContentResolver().query(returnUri, null, null, null, null);

                if (cursor.moveToNext()) {
                    int columnIndex_ID = cursor.getColumnIndex(ContactsContract.Contacts._ID);
                    String contactID = cursor.getString(columnIndex_ID);

                    int columnIndex_HASPHONENUMBER = cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER);
                    String stringHasPhoneNumber = cursor.getString(columnIndex_HASPHONENUMBER);

                    if(stringHasPhoneNumber.equalsIgnoreCase("1")){
                        Cursor cursorNum = getContentResolver().query(
                                ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
                                null, 
                                ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactID, 
                                null, 
                                null);

                        //Get the first phone number
                        if(cursorNum.moveToNext()){
                            int columnIndex_number = cursorNum.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
                            String stringNumber = cursorNum.getString(columnIndex_number);
                            textPhone.setText("0"+stringNumber);
                        }

                    } else {
                        textPhone.setText("NO Phone Number");
                    }


                } else {
                    Toast.makeText(getApplicationContext(), "NO data!", Toast.LENGTH_LONG).show();
                }
            }
        }
    }
EN

回答 2

Stack Overflow用户

发布于 2013-11-30 03:15:44

当你调用startActivityForResult(intent,requestCode)

当用户返回到调用活动时调用onActivityResult

requestCode //您可以通过调用startActivityForResult来启动多个活动,因此此值用于区分它们

resultCode //该值由被调用的activity设置,表示预期的操作是否成功。

data //这是一个Intent类型的对象,其中包含由调用的activity返回的数据。

在执行此部分时的代码中:

代码语言:javascript
代码运行次数:0
运行
复制
  Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
                // BoD con't: CONTENT_TYPE instead of CONTENT_ITEM_TYPE
                intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);

                startActivityForResult(intent, RQS_PICKCONTACT); 

将启动新活动,当用户通过选择联系人从该活动返回时,将调用onActivityResult

票数 0
EN

Stack Overflow用户

发布于 2016-08-10 14:56:53

在u startIntent或u选择联系人后调用onActivityResult。RQS_PICK_CONTACT你可以随心所欲地改变。比如2,3,4或者其他数字。它只是在onActivityResult中标识requestCode,所以你可以随心所欲。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16101191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档