我正在尝试在闹钟响起时使用 android 10 中的 NotificationCompat设置fullScreentIntent,但即使闹钟响起时 fullScreenIntent 也没有显示。
我在清单文件中添加了USE_FULL_SCREEN_INTENT。我尝试获取部分唤醒锁定,禁用键盘锁,但仍然无法使用全屏意图。
AndroidManifest.xml
<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
Run Code Online (Sandbox Code Playgroud)
警报广播接收器.java
public class AlarmBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = "AlarmBroadcastReceiver";
public static final String STOP_CHANNEL_ID = "Location Alert";
public static final int ALARM_NOTIFICATION_ID = 2;
public static MediaPlayer mp;
public static Vibrator vibrator;
private boolean isVibrationEnabled = false;
KeyguardManager keyguardManager;
@Override
public void onReceive(Context context, Intent intent) {
showStopNotification(context);
long[] mVibratePattern …Run Code Online (Sandbox Code Playgroud) broadcastreceiver android-alarms android-fullscreen android-10.0
我正在尝试使用广播接收器在Android Q中实现基于警报的应用程序。我正在使用通知来运行前台服务来触发警报广播接收器。该服务工作正常,并且还触发广播接收器。如果我们在设置闹钟后关闭应用程序或锁定屏幕,该服务将在前台运行并发出通知。
当调用警报广播时,我试图在屏幕锁定时打开一个新活动,以提供停止警报和服务的功能。我尝试禁用键盘保护,打开屏幕,然后从广播接收器打开活动,但我无法成功。
我尝试使用WindowManager 标志,但它们已被弃用,并且在代码中没有任何区别。
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
Run Code Online (Sandbox Code Playgroud)
由于我尝试从 BroadcastReceiver 启动活动,因此我不会有任何活动使用KeyguardManager.requestDismissKeyguard(Activity Activity, KeyguardDismissCallback callback)
有没有办法在屏幕锁定时启动活动来关闭闹钟。我的实现如下:
我还在清单文件中添加了权限。
AndroidManifest.xml
<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
Run Code Online (Sandbox Code Playgroud)
AlarmBroadcastReceiver.class
public class AlarmBroadcastReceiver extends BroadcastReceiver {
public static MediaPlayer mp;
public static Vibrator vibrator;
private boolean isVibrationEnabled = false;
@Override
public void onReceive(Context context, Intent intent) {
long[] mVibratePattern = new long[]{0, 400, 400, 400, 400, 400, 400, 400};
final int[] mAmplitudes = …Run Code Online (Sandbox Code Playgroud) android broadcastreceiver android-alarms keyguard android-windowmanager
我正在尝试将 UTC 日期时间转换为本地日期时间,下面是我的代码。
func dateTimeStatus(date: String) -> String{
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/dd/yy hh:mm:ss a"
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
let dt = dateFormatter.date(from: date)
dateFormatter.timeZone = TimeZone.current
dateFormatter.dateFormat = "MM/dd/yy hh:mm:ss a"
return dateFormatter.string(from: dt!) // .string(from: dt!)
}
Run Code Online (Sandbox Code Playgroud)
当系统(iPhone或iPad)语言设置为英语(印度)时,上面的代码集有效。如果我将语言更改为日语,则会抛出异常,如下所示。
线程 1:致命错误:在解包可选值时意外发现 nil
在return声明中。
我很清楚我弄乱了 dateFormatter 因为dateFormatter.date(from: date) 无法识别日期。因此,将 nil 值分配给 dt。
对于所有系统语言通用使用日期时间格式的任何建议都是值得赞赏的。