小编Ram*_*thy的帖子

当屏幕在 android 10 中锁定时,setFullScreenIntent 不起作用

我正在尝试在闹钟响起时使用 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

6
推荐指数
1
解决办法
1812
查看次数

Android Q 屏幕锁定时如何从广播接收器启动 Activity

我正在尝试使用广播接收器在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

5
推荐指数
1
解决办法
3315
查看次数

在 iOS 中将 UTC 日期时间转换为本地日期时间

我正在尝试将 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。

对于所有系统语言通用使用日期时间格式的任何建议都是值得赞赏的。

time date ios swift dateformatter

2
推荐指数
1
解决办法
6334
查看次数