[解決済み] Androidの連絡先リストを呼び出すには?
質問
Androidアプリを作成中で、電話の連絡先リストを呼び出す必要があります。連絡先リスト機能を呼び出して、連絡先を選び、その連絡先の名前で私のアプリに戻る必要があります。以下は、私がインターネット上で得たコードですが、それは動作しません。
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.Contacts.People;
import android.view.View;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
public class Contacts extends ListActivity {
private ListAdapter mAdapter;
public TextView pbContact;
public static String PBCONTACT;
public static final int ACTIVITY_EDIT=1;
private static final int ACTIVITY_CREATE=0;
// Called when the activity is first created.
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
Cursor C = getContentResolver().query(People.CONTENT_URI, null, null, null, null);
startManagingCursor(C);
String[] columns = new String[] {People.NAME};
int[] names = new int[] {R.id.row_entry};
mAdapter = new SimpleCursorAdapter(this, R.layout.mycontacts, C, columns, names);
setListAdapter(mAdapter);
} // end onCreate()
// Called when contact is pressed
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Cursor C = (Cursor) mAdapter.getItem(position);
PBCONTACT = C.getString(C.getColumnIndex(People.NAME));
// RHS 05/06
//pbContact = (TextView) findViewById(R.id.myContact);
//pbContact.setText(new StringBuilder().append("b"));
Intent i = new Intent(this, NoteEdit.class);
startActivityForResult(i, ACTIVITY_CREATE);
}
}
どのように解決するのですか?
あなたのサンプル コードが何をすることになっているのか 100% はわかりませんが、次のスニペットは、「連絡先リスト関数を呼び出して連絡先を選び、その連絡先の名前で [あなたの] アプリに戻る」のに役立つはずです。
この処理には 3 つのステップがあります。
1. アクセス許可
アプリケーション マニフェストに連絡先データを読み取る権限を追加します。
<uses-permission android:name="android.permission.READ_CONTACTS"/>
2. コンタクトピッカーの呼び出し
アクティビティ内で、Contacts URIの項目からPICKアクションを実行できるアクティビティを探すようにシステムに依頼するIntentを作成します。
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
コール
startActivityForResult
を呼び出し、このIntent(とリクエストコードの整数)を渡します。
PICK_CONTACT
を渡すことで、このIntent(と、この例ではリクエストコードの整数値)を指定します。これによって、Android は
ACTION_PICK
をサポートするように登録されたActivityが起動されます。
People.CONTENT_URI
で、選択されると(あるいはキャンセルされると)、このActivityに戻る。
startActivityForResult(intent, PICK_CONTACT);
3. 結果を聴く
また、Activityで
onActivityResult
メソッドをオーバーライドして、ステップ2で起動した 'select a contact' Activity からのリターンをリッスンしてください。返ってきたリクエストコードが期待する値と一致しているか、また、結果コードが
RESULT_OK
.
選択されたコンタクトのURIを取得するために
getData()
を呼び出すことで取得できます。
データ
インテンションパラメータで指定します。選択された連絡先の名前を取得するには、そのURIを使用して新しいクエリを作成し、返されたカーソルから名前を抽出する必要があります。
@Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, data);
switch (reqCode) {
case (PICK_CONTACT) :
if (resultCode == Activity.RESULT_OK) {
Uri contactData = data.getData();
Cursor c = getContentResolver().query(contactData, null, null, null, null);
if (c.moveToFirst()) {
String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
// TODO Whatever you want to do with the selected contact name.
}
}
break;
}
}
ソースコード全文。 tutorials-android.blogspot.com (アンドロイドの連絡先リストを呼び出す方法) .
関連
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] AndroidのListViewで画像を遅延ロードする方法
-
[解決済み] EclipseのAndroidプラグインで "Debug certificate expired "エラーが発生する。
-
[解決済み] Androidで画面の大きさをピクセル単位で取得する方法
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
-
[解決済み] wrap_contentでRelativeLayoutがフルスクリーンになってしまう
-
[解決済み] フラグメントからツールバーを取得する方法
-
[解決済み] Android: ActionBarのホームアイコンをアプリのアイコンでないものに変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Android Debug Bridgeでアプリケーションのインストール時にINSTALL_FAILED_VERSION_DOWNGRADEを無視する方法はありますか?
-
[解決済み] 深くネストされたスタックから離れるとき、Fragmentのバックスタックをクリーンアップする方法はこれで良いのでしょうか?
-
[解決済み] 文字列からJSONオブジェクトへの変換 Android
-
[解決済み] エラーです。ステータス{statusCode=DEVELOPER_ERROR, resolution=null}.
-
[解決済み] Receiver not registered exception error?
-
[解決済み] Android Studio: キーの復元ができない
-
[解決済み] Android Studioからプロジェクトを削除する
-
[解決済み] プログラムによるセレクタ画像の置き換え
-
[解決済み] Fragment ActionBarCompatの内部からgetSupportActionBarを取得する。
-
[解決済み] AndroidにおけるProgressive Web Appsとネイティブアプリの違いについて [終了しました]