0

所以这就是我想要做的。

我想点击我的 MainActivity 中的一个按钮,然后拉起手机的联系人。我已经在清单中添加了 READ CONTACTS 权限。

以下是相关的代码部分。

MainActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final ListView list = (ListView) findViewById(R.id.list);
    Button getAnswerButton = (Button) findViewById(R.id.button1); 

    getAnswerButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // the button gets clicked and pulls up user's contacts
            list.findViewById(R.id.list);
        }
    });
}

和activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:textSize="32sp" />

<Button
    android:id="@+id/button1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textView1"
    android:layout_centerHorizontal="true"
    android:text="Pick a Friend to Meet!" />

<ListView 
      android:id="@+id/list"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_below="@+id/button1"
     />

</RelativeLayout>

当我运行我的应用程序时,主要活动看起来很好,按钮工作(即当我单击它时发生了一些事情),但随后应用程序关闭。

这是我的第一个安卓应用程序,所以请温柔。谢谢!

4

2 回答 2

0

列表中是否填充了任何内容?无法判断您是否已清理或这只是不完整的代码。不确定按钮如何连接到列表项。假设有一个联系人姓名列表,并且您希望在单击按钮时弹出其中一个电话号码?如果是这种情况,那么 onClick 应该确定选择了哪个列表项。无需在 onClick 中识别列表,列表已找到。

也不确定数字将显示在哪里。没有为它定义视图。使用吐司?

ListView 的精彩教程在这里:

http://www.vogella.com/articles/AndroidListView/article.html

于 2013-10-15T03:15:30.083 回答
0

我是这样做的:

public class ContactFetchActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button contactButton = (Button)findViewById(R.id.button1);

contactButton.setOnClickListener(l);
}

OnClickListener l = new OnClickListener(){

@Override
public void onClick(View arg0) {
try{
Uri contactData = ContactsContract.Contacts.CONTENT_URI;
Cursor contactsCursor = managedQuery(contactData,null, null, null, null);
Log.i("The first one ", ""+ contactsCursor.getCount());
while (contactsCursor.moveToNext()) {
 String id = contactsCursor.getString(contactsCursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
 String name = contactsCursor.getString(contactsCursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
 String hasPhoneNumber = contactsCursor.getString(contactsCursor.getColumnIndexOrThrow(ContactsContract.Contacts.HAS_PHONE_NUMBER));
 Toast.makeText(ContactFetchActivity.this, Integer.parseInt(hasPhoneNumber) + "", 11).show();
 if (Integer.parseInt(hasPhoneNumber) > 0) {
  Uri myPhoneUri = Uri.withAppendedPath(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, id);
  Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ id,null, null);
  String phoneNumber = null;
  while (phones.moveToNext()) {
   phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
   Toast.makeText(ContactFetchActivity.this, phoneNumber , 20).show();
  }
  Toast.makeText(ContactFetchActivity.this, id + "-----" + name , 20).show();
 }

}
}catch(Exception ex){
Toast.makeText(ContactFetchActivity.this, "Problem because " + ex.getMessage(), 10).show();
}
//Uri myPerson = ContentUris.withAppendedId(contentUri, id)
}
};
}

您可以通过此链接此链接进一步了解。

于 2013-10-15T04:13:07.557 回答