为什么 startActivityForResult 不从 AlarmClock.ACTION_SET_ALARM 意图返回任何结果?

Why startActivityForResult not returning any result from AlarmClock.ACTION_SET_ALARM intent?

我正在尝试使用我的应用程序设置闹钟,为此我正在使用 here 所述的闹钟通用意图。

这是我的代码:

public void createAlarm(String message, int hour, int minutes) {
        Intent intent = new Intent(AlarmClock.ACTION_SET_ALARM)
                .putExtra(AlarmClock.EXTRA_MESSAGE, message)
                .putExtra(AlarmClock.EXTRA_HOUR, hour)
                .putExtra(AlarmClock.EXTRA_MINUTES, minutes)
                .putExtra(AlarmClock.EXTRA_SKIP_UI, true);
        if (intent.resolveActivity(getPackageManager()) != null) {
            startActivityForResult(intent, SET_ALARM_REQUEST_CODE);
        }
}

这里是onActivityResult()

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == SET_ALARM_REQUEST_CODE) {
            if (resultCode == RESULT_OK) {
                if (data != null) {
                    Toast.makeText(getBaseContext(), "Alarm for " + data.getData().toString() + " has been set successfully!", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(getBaseContext(), "data is null", Toast.LENGTH_SHORT).show();
                }
            } else {
                Toast.makeText(getBaseContext(), "resultCode not OK", Toast.LENGTH_SHORT).show();
            }
        }
}

这里的问题是我收到这条 Toast 消息:resultCode not OK

那么,为什么 startActivityForResult 没有返回任何结果?

那个 Intent 动作是 not documented to return anything。因此,实现不需要使用 setResult(),因此您将获得默认响应。

将您的 startActivityForResult() 替换为 startActivity(),并从与 startActivityForResult() 关联的 onActivityResult() 中删除您的结果处理代码。

顺便说一句,用 this 替换所有 getBaseContext() 电话。