0

Android RingtoneManager が提供する着信音ピッカーを使用しています。着信音を選択して [OK] を押すと、resultCode は Activity.RESULT_OK になり、データには着信音の URI が含まれます。Cancelを押すと、resultCodeはActivity.RESULT_CANCELEDです。これまでのところ、これは期待どおりに機能します。しかし、Silent または None を選択して [OK] を押すと、resultCode も RESULT_CANCELED になるため、ユーザーがピッカー ダイアログをキャンセルしただけなのか、本当に着信音を再生したくないのかわかりません。

ここで何がうまくいかないのですか?

const val PICK_TONE = 1

btnRtp.setOnClickListener {
            intent = Intent(RingtoneManager.ACTION_RINGTONE_PICKER)
            intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION)
            intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Choose ringtone")
            startActivityForResult(intent, PICK_TONE)
        }

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)     
        if (requestCode == PICK_TONE) {
            if (resultCode == Activity.RESULT_CANCELED) {
                textView.text = "Canceled"
            } else
            if (resultCode == Activity.RESULT_OK) {
                textView.text = ""
                var toneUri: Uri? =
                    data?.getParcelableExtra<Uri>(RingtoneManager.EXTRA_RINGTONE_PICKED_URI)
                textView.text = toneUri?.toString() ?: "Silent"
            }
        }
    }
4

1 に答える 1