質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

0回答

538閲覧

Android 連絡先から電話番号の取得でシャットダウンしてしまう

退会済みユーザー

退会済みユーザー

総合スコア0

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2020/06/22 17:05

前提・実現したいこと

連絡先から電話番号を取得して、テキストに表示する

発生している問題・エラーメッセージ

val phoneCurssor = contentResolver.queryのところでシャットダウンしてしまいます。
パーミッション設定済みです。
<uses-permission android:name="android.permission.READ_CONTACTS" />

D/AndroidRuntime: Shutting down VM

該当のソースコード

kotlin

1import android.app.Activity 2import android.content.Intent 3import android.os.Bundle 4import android.provider.ContactsContract 5import android.util.Log 6import android.widget.Button 7import android.widget.TextView 8 9class MainActivity : Activity() { 10 private val textName: TextView? = null 11 private val textPhoneNumber: TextView? = null 12 private val buttonGetPhoneNumber: Button? = null 13 override fun onCreate(savedInstanceState: Bundle?) { 14 super.onCreate(savedInstanceState) 15 setContentView(R.layout.activity_main) 16 } 17 18 override fun onResume() { 19 super.onResume() 20 // 電話帳アプリのURIは標準APIで定数で提供されている 21 val intent = Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI) 22 startActivityForResult(intent, REQUEST_CODE_PHONE_NUMBER) 23 } 24 25 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { 26 if (requestCode != REQUEST_CODE_PHONE_NUMBER) { // 一応、チェック 27 return 28 } 29 var phoneNumbers = arrayOfNulls<String>(0) 30 val contentResolver = contentResolver 31 val cursor = contentResolver.query(data.data!!, null, null, null, null) 32 var id = "" 33 var name: String? = "" 34 if (cursor!!.moveToFirst()) { 35 // 1.選択された人のidの取得 36 id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)) 37 // 2.選択された人の名前の取得 38 name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)) 39 // 3.選択された人の電話番号をすべて取得 40 val phoneCurssor = contentResolver.query( 41 ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 42 null, 43 null, 44 null, 45 null) 46 if (phoneCurssor!!.moveToFirst()) { 47 phoneNumbers = arrayOfNulls(phoneCurssor.count) 48 var count = 0 49 do { 50 phoneNumbers[count] = phoneCurssor.getString( 51 phoneCurssor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA)) 52 count++ 53 } while (phoneCurssor.moveToNext()) 54 } 55 phoneCurssor.close() 56 } 57 cursor.close() 58 59 // 電話帳から取得した電話帳の名前 60 Log.v("Contactsから取得した電話帳の名前", name) 61 if (phoneNumbers.size > 0) { 62 // 電話帳から取得した電話番号 63 Log.v("Contactsから取得した電話番号", phoneNumbers[0]) 64 } 65 } 66 67 companion object { 68 // リクエストコード 69 private const val REQUEST_CODE_PHONE_NUMBER = 0 70 } 71}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問