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>

アプリを実行すると、メイン アクティビティは正常に表示され、ボタンは機能します (つまり、クリックすると何かが発生します) が、その後アプリが閉じます。

初めてのAndroidアプリなのでお手柔らかにお願いします。ありがとう!

4

2 に答える 2

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 に答える
0

Is the list populated with anything? Can't tell if you have scrubbed or is this is just incomplete code. Not sure how the button is connected to the list item. Assuming a list of contacts names and you want one of their phone numbers to pop up when you click the button? If that is the case then the onClick should figure out which list item is selected. No need to id the list in the onClick, list is already found.

Also not sure where the number will be displayed. No view defined for it. Using Toast?

Great tutorial on ListView here:

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

于 2013-10-15T03:15:30.083 に答える