所以这就是我想要做的事情。
我想点击我的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>
当我运行我的应用程序时,主要活动显示正常,按钮工作(即当我点击它时会发生某些事情),但随后应用程序关闭。
这是我的第一个Android应用程序,所以请保持温和。谢谢!
答案 0 :(得分:0)
列表中是否填充了任何内容?无法判断您是否已擦洗或者这只是不完整的代码。不确定按钮如何连接到列表项。假设有一个联系人姓名列表,并且您希望在单击按钮时弹出其中一个电话号码?如果是这种情况,则onClick应该确定选择了哪个列表项。无需在onClick中列出列表,已找到列表。
也不确定号码的显示位置。没有为它定义视图。使用Toast?
ListView上的精彩教程:
http://www.vogella.com/articles/AndroidListView/article.html
答案 1 :(得分: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)
}
};
}