Android(X06HT Desire) 連絡先の取得と電話をかけるサンプル

テキストボックスに電話番号を入れてボタンを押すと、ダイヤル画面に遷移するサンプル。

コンタクトリストから、ユーザーID、表示名、電話番号をリストビューに表示し、選択されたらテキストボックスに電話番号を設定する。

telephone 

  1. package info.typea.telephoneapp;
  2.  
  3. import android.app.ListActivity;
  4. import android.content.Intent;
  5. import android.database.Cursor;
  6. import android.net.Uri;
  7. import android.os.Bundle;
  8. import android.provider.ContactsContract;
  9. import android.view.View;
  10. import android.view.View.OnClickListener;
  11. import android.widget.Button;
  12. import android.widget.EditText;
  13. import android.widget.LinearLayout;
  14. import android.widget.ListView;
  15. import android.widget.SimpleCursorAdapter;
  16. import android.widget.TextView;
  17.  
  18. /**
  19. * @see http://stackoverflow.com/questions/1721279/how-to-read-contacts-on-android-2-0
  20. */
  21. public class TelephoneAppActivity extends ListActivity implements OnClickListener {
  22. /** Called when the activity is first created. */
  23. private EditText txtPhoneNo;
  24. private SimpleCursorAdapter adapter;
  25. @Override
  26. public void onCreate(Bundle savedInstanceState) {
  27. super.onCreate(savedInstanceState);
  28. setContentView(R.layout.main);
  29. txtPhoneNo = (EditText)findViewById(R.id.txt_phone_no);
  30. Button btn = (Button)findViewById(R.id.btn_call);
  31. btn.setOnClickListener(this);
  32. // リストに表示する項目
  33. String[] projection = {
  34. ContactsContract.CommonDataKinds.Phone._ID,
  35. ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
  36. ContactsContract.CommonDataKinds.Phone.NUMBER
  37. };
  38. String selection = null;
  39. String[] selectionArgs = null;
  40. String sortOrder = ContactsContract.PhoneLookup.DISPLAY_NAME + " asc";
  41. // カーソルの生成
  42. Cursor cur = managedQuery(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
  43. projection,
  44. selection, selectionArgs, sortOrder);
  45.  
  46. // データベースのカラムとリストビューの関連づけ
  47. String from[] = new String[] { ContactsContract.CommonDataKinds.Phone._ID,
  48. ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
  49. ContactsContract.CommonDataKinds.Phone.NUMBER };
  50. int[] to = new int[] { R.id.lbl_id, R.id.lbl_name, R.id.lbl_phone};
  51. // リストアダプタのセット
  52. adapter = new SimpleCursorAdapter(this, R.layout.row_phoneno, cur, from, to);
  53. setListAdapter(adapter);
  54. }
  55. @Override
  56. protected void onListItemClick(ListView l, View v, int position, long id) {
  57. super.onListItemClick(l, v, position, id);
  58.  
  59. LinearLayout ll = (LinearLayout) v;
  60. TextView phone = (TextView) ll.findViewById(R.id.lbl_phone);
  61. txtPhoneNo.setText(phone.getText());
  62. }
  63.  
  64. @Override
  65. public void onClick(View v) {
  66.  
  67. // ダイアルアクティビティに遷移
  68. String phoneNo = "tel:" + txtPhoneNo.getText().toString();
  69. Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(phoneNo));
  70. startActivity(intent);
  71. }
  72. }

/res/layout/main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent">
  6. <EditText android:text=""
  7. android:layout_height="wrap_content"
  8. android:layout_width="fill_parent"
  9. android:inputType="phone"
  10. android:id="@+id/txt_phone_no"></EditText>
  11. <Button android:id="@+id/btn_call"
  12. android:layout_height="wrap_content"
  13. android:layout_width="fill_parent"
  14. android:text="call"></Button>
  15. <ListView android:id="@+id/android:list"
  16. android:layout_height="wrap_content"
  17. android:layout_width="fill_parent"></ListView>
  18. <TextView android:text="No Contact list."
  19. android:id="@+id/android:empty"
  20. android:layout_width="wrap_content"
  21. android:layout_height="wrap_content"></TextView>
  22. </LinearLayout>
  23.  

/res/layout/row_phoneno.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:id="@+id/LinearLayout01"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent">
  6. <TextView android:id="@+id/lbl_id"
  7. android:layout_width="wrap_content"
  8. android:layout_height="wrap_content" >
  9. </TextView>
  10. <TextView android:text=" : "
  11. android:layout_width="wrap_content"
  12. android:layout_height="wrap_content" >
  13. </TextView>
  14. <TextView android:id="@+id/lbl_name"
  15. android:layout_width="wrap_content"
  16. android:layout_height="wrap_content" >
  17. </TextView>
  18. <TextView android:text=" : "
  19. android:layout_width="wrap_content"
  20. android:layout_height="wrap_content" >
  21. </TextView>
  22. <TextView android:id="@+id/lbl_phone"
  23. android:layout_width="wrap_content"
  24. android:layout_height="wrap_content" >
  25. </TextView>
  26. </LinearLayout>

あと、マニフェストで、以下のパーミッションを設定

  1. <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
  2. <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
  3.  

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です