【问题标题】:Setting alarm after phone reboot手机重启后设置闹钟
【发布时间】:2013-11-07 22:12:22
【问题描述】:

我有问题。我是 android 和 java 的新手,我正在制作一个程序,它会在用户选择的时间关闭手机声音并调暗显示器。一切都是通过获取用户输入值(小时和分钟)并根据这些值设置警报来向 BroadcastReceiver 触发一个意图来完成的,该广播接收器启动一个关闭声音并使显示变暗的服务。我希望在重新启动后重新启动警报。我认为我可以简单地设置另一个 BroadcastReceiver 来接收 BOOT_COMPLETED 意图,然后设置警报,该警报会触发一个在启动服务之前使用的 BroadcastReceiver 的意图。我的问题是我不知道如何将获取用户输入的活动中的值放入由 BOOT_COMPLETED 意图启动的 BoradcastReceiver。或者是否有另一种方法可以在重启后根据用户输入设置相同的警报?简而言之,我想在重启后自动设置警报,其触发时间与用户设置的警报相同。对不起我的英语不好......

【问题讨论】:

    标签: android broadcastreceiver alarm reboot


    【解决方案1】:

    你的方法是正确的。

    您唯一需要添加的就是将它保存在数据库或其他地方。每次用户设置内容并且您与AlarmManager 交互时,也将其放入文件中。

    当您收到BOOT_COMPLETED 时,加载数据并设置所有之前的警报。

    【讨论】:

    • 伙计,我想是的。我只是没有考虑将用户输入值持久化到数据库。实际上,我将这些值保存在 SharedPreferences 上,以便在用户关闭并打开应用程序时获取它。也许可以从 SharedPreferences 中获取值?无论如何,你很棒。非常感谢!
    • @user2883597 当然可以。 SharedPreferences 是“别处”的可能性之一。
    • 如果我将 SharedPreferences 的值保存在主要活动中并且我需要在 BroadcastReceiver 中获取值,我该如何获取它?因为每个线程都有自己的 SharedPreferences 还是应用包中所有类的一个文件?
    • @user2883597 只需在Activity 中执行相同操作即可。很可能是SharedPreferences prefs = context.getSharedPreferences("name", Context.MODE_PRIVATE);
    • 我认为有一个问题。 BroadcastReceiver 由来自android系统但不是来自我的应用程序的意图启动,因此上下文不是我需要的上下文。我的意思是在 SharedPreferences prefs = context.getSharedPreferences("name", Context.MODE_PRIVATE);我认为在调用 getSharedPreferences() 之前我应该​​使用其他东西而不是上下文。
    【解决方案2】:

    在您的应用程序清单中:

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    

    然后实现一个BroadcastReceiver来接收广播:

    public class SampleBootReceiver extends BroadcastReceiver {
    
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
                // Set the alarm here.
            }
        }
    }
    

    要在重启后设置闹钟,您可以从共享首选项或数据库中选择闹钟的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 2014-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多