0

別の質問からこのコードを取得しましたが、アクティビティでこのonActivityResult()クラスを呼び出して、電話から最初の連絡先を表示する方法がわかりません。onCreate()また、「if (requestCode == RQS_PICKCONTACT){」と「RQS_PICKCONTACT」は何の略ですか?誰か明確にしてくれませんか?

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();
                }
            }
        }
    }
4

2 に答える 2

0

startActivityForResult(intent, requestCode )を呼び出すと、

onActivityResult は、ユーザーがアクティビティの呼び出しに戻ったときに呼び出されます

requestCode //startActivityForResult を呼び出すことで複数のアクティビティを開始できるため、この値はそれらを区別するためのものです

resultCode //この値は、呼び出されたアクティビティによって設定され、意図した操作が成功したかどうかを示します。

data //これは、呼び出されたアクティビティによって返されるデータを含むタイプ Intent のオブジェクトです。

この部分が実行されるときのコードで:

  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 が呼び出されます

于 2013-11-29T19:15:43.953 に答える
-1

onActivityResult は、startIntent または連絡先を選択した後に呼び出されます。RQS_PICK_CONTACT 必要に応じて変更できます。2 、 3,4 または別の数字のように。onActivityResult の requestCode の ID だけなので、必要に応じて実行できます。

于 2016-08-10T06:56:52.663 に答える