Re: 【教えてください】電話帳のフリガナ情報の取得方法

851 views
Skip to first unread message

Fumio Jin

unread,
Sep 24, 2012, 4:15:24 AM9/24/12
to android-g...@googlegroups.com
はじめましてJINと申します。
先日私も同じ事を質問し解決しました。
その際のやりとりがありますので参考にしてみて下さい。



http://www.nakamura-shoten.com/software/androidmemo/contactlist_getaddress_recom.php 

2012年9月24日月曜日 17時06分24秒 UTC+9 U1:
はじめまして、初心者です。

電話帳アプリを作りたいのですが、フリガナ情報の取得方法(格納場所)が分かりません。

下記にアクセスしてもデータは入っていませんでした。。。

android.provider.ContactsContract.CommonDataKinds.StructuredName.PHONETIC_FAMILY_NAME

よろしくお願い致します。

U1

unread,
Sep 24, 2012, 5:33:10 AM9/24/12
to android-g...@googlegroups.com
早々のご回答をありがとうございます!
(こんな便利なサイトがあるとは知りませんでした♪)

教えて頂いた通りではありますが、
下記イメージでデータの取得をしようとしております。

DATA1、DATA2、DATA3の場合は正常に漢字情報が
取得できているのですが、DATA7、DATA9の場合は空白です。。。

Uri uri = ContactsContract.Data.CONTENT_URI;

ContentResolver resolver = getContentResolver();

Cursor c1 = resolver.query(uri,null,Data.MIMETYPE+"=?",new String[]{StructuredName.CONTENT_ITEM_TYPE},null);

c1.moveToFirst();

String namedata = c1.getString(c1.getColumnIndex(Data.DATA7));

Fumio Jin

unread,
Sep 24, 2012, 5:41:01 AM9/24/12
to android-g...@googlegroups.com
sort_orderを指定されていないのではないでしょうか。
詳しい理由は分かりませんが(申し訳ない)、
sort_orderを指定していない場合、私もうまく取得できませんでした。
そちらを指定して、DATA9を抜き出してみてください。
後は、既存、オリジナルのアダプタなりに実装すれば簡単な電話帳が完成ですよ(*^_^*)






2012年9月24日月曜日 18時33分10秒 UTC+9 U1:

U1

unread,
Sep 24, 2012, 9:18:59 AM9/24/12
to android-g...@googlegroups.com
sort_orderを設定することで取得できました!ありがとうございます☆
(本当に何故か分かりませんね。。。)

この時点でPHONETIC_FAMILY_NAMEが取得できていないので、
sort_orderに指定してフリガナでソートすることはできないということですね。。。

いやー、初心者なもんでまだまだです^^;
こんな感じでアダプタにセットしてみたのですが、うまく表示されません。。。(強制終了)

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1);

while (c1.moveToNext()) {
String displayName = c1.getString(c1.getColumnIndex(Data.DATA9));
adapter.add(displayName);}

ListView listView = (ListView) findViewById(R.id.listView1);
listView.setAdapter(adapter);

Fumio Jin

unread,
Sep 24, 2012, 11:31:04 AM9/24/12
to android-g...@googlegroups.com
恐らくですがsimple_list_item_1を指定しているにも関わらず中身を指定していないことが原因ではないでしょうか。

例えば、

 SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1,c1,new String[]{Data.DATA9,},new int[] {android.R.id.text1});

  setListAdapter(adapter);

だけ記述すればエラーにならないのではないでしょうか。
ただ、SimpleCursorAdapterを使う場合は推奨されないようなので気をつけてください。
やっぱりオリジナルのアダプタにセットするのがいいかと思います。



2012年9月24日月曜日 22時18分59秒 UTC+9 U1:

U1

unread,
Sep 30, 2012, 8:54:46 AM9/30/12
to android-g...@googlegroups.com
返信が遅くなり申し訳ありません。

無事にフリガナ情報の取得ができました☆

ご丁寧にありがとうございました!

まだまだこれからですが、
また何かありましたらよろしくお願い致しますm(_ _)m
Reply all
Reply to author
Forward
0 new messages