7

カスタム ロケールを変更すると、電話タイプのラベルが適切な言語に変更されます。電話タイプのローカライズされたラベルを取得する方法を知っている人はいますか?

アプリで連絡先を選択して電話番号を取得し、複数の番号がある場合は AlertDialog を使用して、ユーザーが正しい番号を選択できるようにします。この選択リストでは、ユーザーが選択しやすいように、タイプのラベルを表示したいと考えています。これらのラベルは Android システムのどこかにあるため、ローカライズされたラベルを取得できる必要があります。残念ながら、電話番号を読み取るとき、Phone.LABEL は null です。

4

4 に答える 4

18

これは少し古いことは知っていますが、これは次のとおりです。

Phone.getTypeLabel(this.getResources(), cursor.getInt(typeIdx), "");

私のために働いた

于 2011-05-06T20:28:11.587 に答える
2

はい、次のコードでローカライズされた電話タイプの文字列を取得できます。

int phoneNumberType = (int)pCur.getInt(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
ContactsContract.CommonDataKinds.Phone.getTypeLabel(context.getResources(), phoneNumberType , "")

ただし、カスタム電話タイプの場合は、電話タイプだけでなく、電話ラベルも考慮する必要があります。

String phoneLabel = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.LABEL));
于 2015-03-09T21:41:03.780 に答える
1

インフェルノの答えは有効な答えであり、私が探していたものと似ていたので、この答えを見つけてうれしかった. ただし、API レベル 5 (Android 2.0) 以降でインストールされた電話を扱っている場合、これには小さな問題が 1 つあります。クラスが API レベルのインターフェイスを置き換えるandroid.R.array.phoneTypes前に存在していた電話タイプのリストのみを返します。5. Android バージョン (API レベル) 1.6 (4)、2.1-update 1 (7)、および 2.2 (8) を実行しているエミュレーターで新しい連絡先を作成するときに表示されるラベルを確認しました。ContactsContractContacts

印刷すると、android.R.array.phoneTypes次の有効な電話タイプが含まれます:
自宅、携帯電話、勤務先、勤務先ファックス、自宅ファックス、ポケットベル、その他、カスタム

これらは、Android 2.0 以降がインストールされた電話に存在する有効な電話タイプであり、同じ配列にはありません:
Callback、Car、Company Main、ISDN、Main、Other Fax、Radio、Telex、TTY TDD、Work Mobile、Work Pager 、アシスタント、MMS

残念ながら、android.R.array.phoneTypesAndroid 2.0 以降の電話で有効な電話の種類をすべて一覧表示するようなものを見つけることができませんでした。誰もまだそのようなものに出くわしましたか?

参考文献

android.R.array.phoneTypes定義: http://developer.android.com/reference/android/R.array.html#phoneTypes

注:現時点では、投稿ごとに複数のハイパーリンクを投稿できないように見えるため、他の2つの参照リンクを個別の回答に投稿しています.

于 2010-10-11T00:45:51.310 に答える
1

私はこのコードを使用しています

    public void getPhoneType(){
    int res;
    for(int i=0;i<=20;i++){
        res = ContactsContract.CommonDataKinds.Phone.getTypeLabelResource(i);
        Log.d(TAG,"i: "+ i +" type: " + context.getString(res));
    }
}

有効なタイプの実際の数を取得する場所が見つかりませんでしたが、http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Phone.html#getTypeLabelResource%28int%29は、常に有効な解像度なので、繰り返される値が与えられるまで繰り返すことができます... 20後にカスタム解像度が得られます。

于 2013-01-13T16:42:57.560 に答える