【问题标题】:Android Ringtonemanager returns RESULT_CANCELED when "Silent" is selected选择“静音”时,Android Ringtonemanager 返回 RESULT_CANCELED
【发布时间】:2019-08-28 19:02:07
【问题描述】:

我正在使用 Android RingtoneManager 提供的铃声选择器。 当我选择铃声并按 OK 时,resultCode 是 Activity.RESULT_OK 并且 data 包含铃声的 URI。 当我按下取消时,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"
            }
        }
    }

【问题讨论】:

  • 试试这个intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, true);
  • 静音/无已由铃声选择器显示,我认为这是默认行为。但问题是,当使用 OK 按钮选择 Silent 时,我没有得到 RESULT_OK 而是 RESULT_CANCELED。

标签: android ringtonemanager


【解决方案1】:

我自己想出了解决方案。事实证明,如果您不通过 intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, currentTone) 传递 URI,则选择器会预先选择 Silent,但单击 OK 不会给出 RESULT_OK。当我将有效的 URI 传递给选择器时,无论选择什么音调,选择器都会在单击 OK 时返回 RESULT_OK。此处的文档可能会更精确一些...

【讨论】:

    猜你喜欢
    • 2016-02-12
    • 2020-03-06
    • 2017-01-27
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    相关资源
    最近更新 更多