Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在列表视图中检索联系人,并通过单击操作在下一个活动中显示姓名和电话号码_Android - Fatal编程技术网

Android 在列表视图中检索联系人,并通过单击操作在下一个活动中显示姓名和电话号码

Android 在列表视图中检索联系人,并通过单击操作在下一个活动中显示姓名和电话号码,android,Android,我已经获得了代码,通过内容提供商,我可以检索电话联系人并以列表格式显示它们。 我想在下一个活动中,当我单击第一个活动的列表格式联系人时,显示特定人员的电话号码和姓名。我在这方面遇到错误,它无法执行单击操作并在下一个活动中显示。请帮助我解决此问题 这是我通过内容提供商显示联系人的第一个活动 import android.app.Activity; import android.app.ListActivity; import android.content.Intent; import an

我已经获得了代码,通过内容提供商,我可以检索电话联系人并以列表格式显示它们。 我想在下一个活动中,当我单击第一个活动的列表格式联系人时,显示特定人员的电话号码和姓名。我在这方面遇到错误,它无法执行单击操作并在下一个活动中显示。请帮助我解决此问题

这是我通过内容提供商显示联系人的第一个活动

import android.app.Activity;

import android.app.ListActivity;

import android.content.Intent;

import android.database.Cursor;

import android.net.Uri;

import android.os.Bundle;

import android.provider.ContactsContract;

import android.view.View;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.ListView;

import android.widget.SimpleCursorAdapter;

import android.widget.TextView;



public class MsatActivity extends ListActivity 

{

TextView ContactsTV;

ListView lv;

Cursor c;

public static final Uri CONTENT_URI = 

Uri.parse("content://com.android.contacts/contacts/1557");


public void onListItemClick(View v)

{

    Intent outData = new Intent(this,Full.class); 

//   setResult(Activity.RESULT_OK, outData);

     startActivity(outData);

}

  public void onCreate(Bundle savedInstanceState) 

  {
      super.onCreate(savedInstanceState);

      setContentView(R.layout.main);

      Uri myContacts = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;         

      c = getContentResolver().query(myContacts, new String[]

      {ContactsContract.CommonDataKinds.Phone._ID,

      ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,

      ContactsContract.CommonDataKinds.Phone.NUMBER}     

      , null, null, null);


      String[] columns = new String[]                                   

              { 

              ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,

              ContactsContract.CommonDataKinds.Phone.NUMBER};        

             int[] to = new int[] {R.id.text1,R.id.text2};



            SimpleCursorAdapter mAdapter = new 

SimpleCursorAdapter(this,R.layout.listitems, c, columns, to); 

            setListAdapter(mAdapter); 

             lv.setOnItemSelectedListener(new OnItemClickListener() 

             {



public void onItemClick(AdapterView<?> parent, View view, int pos, long id) 

{

 int rowId = c.getInt(c.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone._ID));

Uri outURI = Uri.parse(CONTENT_URI.toString() + "/" + rowId); 

Intent outData = new Intent(); 

outData.setData(outURI);

 setResult(Activity.RESULT_OK, outData);

 finish();

 }

             });

  }

  }

我真的搞不懂你的代码。第一个活动似乎创建了启动整个活动的意图,但它有两个“onclick”方法,它执行setResult()和finish(),尽管它从未执行过getIntent()

第二个活动为整个电话表创建一个ACTION#PICK Intent,并通过查询结果来处理返回,结果应该是用户选择的联系人的联系人ID。不过,我不认为这是整个URI;您应该通过调试来验证这一点。然后尝试获取此联系人的显示名称

很好,但我不明白你为什么需要第一个活动

我在Stackoverflow上的其他地方发布了一些关于使用联系人提供商的说明;只需搜索android和ContactsContract

import android.app.Activity;

import android.content.Intent;

import android.database.Cursor;

import android.net.Uri;

import android.os.Bundle;

import android.provider.ContactsContract;

import android.view.View;

import android.widget.Button;



public class Full extends Activity

{



    private static final int CONTACT_PICKER_RESULT = 1001;

    String name;

    Cursor cursor;

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState)

    {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main1);

        Button getContacts = (Button)findViewById(R.id.button1);

        getContacts.setOnItemClickListener(new View.OnItemClickListener() 

        {



            public void onClick(View v)

            {

                Intent i = new Intent(Intent.ACTION_PICK,

                        ContactsContract.CommonDataKinds.Phone.CONTENT_URI);

                startActivityForResult(i, CONTACT_PICKER_RESULT);



            }

        });

    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (resultCode == RESULT_OK)

        {

            switch (requestCode)

            {

            case CONTACT_PICKER_RESULT:





                try {

                    Uri result = data.getData();

                    String id = result.getLastPathSegment();



                    //Get Name

                    cursor = getContentResolver().query(result, null, null, null, null);

                    if (cursor.moveToFirst())

                    {

                        name = 
cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

                    } 

                }

                    catch (Exception e) 

                    {



                    }

            }

        }

    }

}