为什么 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()
电话。
我正在尝试使用我的应用程序设置闹钟,为此我正在使用 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()
电话。