我正试图在闹钟中设置一个闹钟。我使用的是Android手机(它有未经修改的操作系统),并安装了时钟应用程序(预装的),允许设置警报。在过去,当我使用AlarmManager和PendingIntent时,当我必须在后台设置警报时,设置警报是有效的。这表明我的时钟应用程序可以响应AlarmClock
的意图。但是现在,当我试图从我的应用程序的前台发送一个意图时,它说:
没有任何应用程序可以执行此操作。
这不是来自堆栈跟踪,而是一个弹出窗口,显示给用户选择选择哪个时钟应用程序来设置闹钟(或者哪个应用程序一般用于某个目的)。
下面是活动的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");
}
我做错什么了?下面的评论只是询问和要求对这个问题做更多的澄清,这是按要求做的。所以你可以跳过阅读
发布于 2020-08-31 05:09:45
没有任何应用程序可以执行此操作。
当您没有设置警报所需的权限时,就会发生这种情况。
希望接收ACTION_SET_ALARM和ACTION_SET_TIMER意图的应用程序应该创建一个活动来处理需要权限ACTION_SET_TIMER的意图。
请求SET_ALARM
权限:
<mainfest
...
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
</manifest>
https://stackoverflow.com/questions/63649575
复制相似问题