【问题标题】:Open device contacts list at button click event在按钮单击事件中打开设备联系人列表
【发布时间】:2011-02-14 13:16:04
【问题描述】:

如何在按钮点击事件中打开 Android 设备联系人列表。

【问题讨论】:

标签: android android-intent onclick contacts


【解决方案1】:

试试这个代码..

    yourButton.setOnClickListener(new YouButtonEvent());


    class YouButtonEventimplements OnClickListener{

    @Override
    public void onClick(View v) {

        Intent it= new Intent(Intent.ACTION_PICK,  Contacts.CONTENT_URI);

        startActivityForResult(it, PICK_CONTACT);

    }

}

【讨论】:

  • 其中 PICK_CONTACT 是您的类中定义的常量: private static final int PICK_CONTACT = 1234;
  • 别忘了!
  • 这个 PICK_CONSTANT 常量具体定义在哪个库中?要导入什么。我不想像 dan k 建议的那样对其进行硬编码,但我找不到它的来源。
【解决方案2】:

声明一些变量。创建一个方法并处理事件。

private static final int CONTACT_PICKER_RESULT = 1001;
private static final String DEBUG_TAG = "Contact List";
private static final int RESULT_OK = -1;

// a method to open your contact list
private void openContactList() {

    Intent it = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
    startActivityForResult(it, CONTACT_PICKER_RESULT);

}

// handle after selecting a contact from the list
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        switch (requestCode) {
        case CONTACT_PICKER_RESULT:
            // handle contact results
            Log.w(DEBUG_TAG, "Warning: activity result is ok!");
            break;
        }
    } else {
        // gracefully handle failure
        Log.w(DEBUG_TAG, "Warning: activity result not ok");
    }
}

【讨论】:

    【解决方案3】:

    您可以将此源代码作为参考:

    import android.app.Activity; 
    import android.content.Intent;
    import android.database.Cursor;
    import android.net.Uri;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.provider.ContactsContract;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
    
    public class Test1Activity extends Activity  {
    
        private static final int PICK_CONTACT_REQUEST = 1;
    
        private static final int PICK_CONTACT = 0;
    
        public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            Button pickContact = (Button) findViewById(R.id.button1);
    
            pickContact.setOnClickListener(new OnClickListener() 
            {
                public void onClick(View v) {
    
                    Intent i = new Intent(Intent.ACTION_INSERT_OR_EDIT);
                    i.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);   
    
                    startActivity(i);
                }
            });
    
        }
    }
    

    【讨论】:

      【解决方案4】:

      如果您想从您的设备中选择联系人,请使用此代码。

      button.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                 openContect();
                  dialog.dismiss();
              }
      

      openContact() is:

       private void openContect() {
          Intent intent = new Intent(Intent.ACTION_PICK);
          intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
          if (intent.resolveActivity(getPackageManager()) != null) {
              startActivityForResult(intent, REQUEST_SELECT_CONTACT);
          }
      }
      

      在你的onActivityResult() 中使用这个:

      if (requestCode==REQUEST_SELECT_CONTACT && resultCode == RESULT_OK && null != data){
              Uri contactUri = data.getData();
             //do what you want...
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多