AlarmClock 意图说 "No apps can perform this action."

AlarmClock intent says "No apps can perform this action."

我正在尝试在闹钟中设置闹钟。我正在使用 Android One Phone(具有未修改的 OS)并安装了允许设置闹钟的时钟应用程序(预装)。过去,当我不得不在后台设置警报时使用 AlarmManager 和 PendingIntent 时,设置警报一直有效。这表明我的时钟应用程序可以响应 AlarmClock 意图。但是现在当我试图从我的应用程序的前台发送一个意图时,它说:

No apps can perform this action.

这不是来自堆栈跟踪,而是显示给用户的弹出窗口,用于选择要选择哪个时钟应用程序来设置闹钟(或通常用于意图的应用程序)

这是我调用它的 Activity 的 onCreate() 代码:

public class MainActivity extends AppCompatActivity {
    ...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        Utils.setAlarm(this, Utils.getLDT(epochTime).plusHours(8));
    }
}

这是发送意图的 Utils#setAlarm 函数:

public class Utils {

    public static void setAlarm(Context context, LocalDateTime alarmTimeDT) {

        Intent intent = new Intent(AlarmClock.ACTION_SET_ALARM);
        intent.putExtra(AlarmClock.EXTRA_SKIP_UI, true);
        intent.putExtra(AlarmClock.EXTRA_HOUR, alarmTimeDT.getHour());
        intent.putExtra(AlarmClock.EXTRA_MINUTES, alarmTimeDT.getMinute());
        intent.putExtra(AlarmClock.EXTRA_MESSAGE, "Good Morning");
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
    }
    ...
}

这是过去用于同一设备和同一时钟应用程序的附加代码。这是为了取消已经设置的闹钟,但是用于设置旧闹钟的代码除了取消部分之外是相似的:

        //cancel old alarm
        AlarmManager alarmMgr = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
        PendingIntent alarmIntent = PendingIntent.getActivity(
                this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
        if (alarmIntent != null) {
            alarmMgr.cancel(alarmIntent);
        } else {
            Log.i(TAG, "intent is null");
        }

我做错了什么?任何帮助表示赞赏。 以下评论只是质疑并要求对问题进行更多澄清,已按要求完成。所以你可以跳过阅读它们

No apps can perform this action.

如果您没有设置闹钟所需的权限,就会出现这种情况。

来自AlarmClock reference

Applications that wish to receive the ACTION_SET_ALARM and ACTION_SET_TIMER Intents should create an activity to handle the Intent that requires the permission com.android.alarm.permission.SET_ALARM.

请求SET_ALARM权限:

<mainfest
    ...
    <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>

</manifest>