【问题标题】:Setting up AlarmManager to run when Android app isn't running?将 AlarmManager 设置为在 Android 应用程序未运行时运行?
【发布时间】:2014-11-22 06:30:46
【问题描述】:

我看了几本指南,基本上都做到了:

Main.java

public class Main extends Activity 
{
    PendingIntent pendingIntent;

    @Override
    public void onCreate(Bundle savedInstanceState) 
     {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("America/New_York"));

      cal.set(Calendar.HOUR_OF_DAY, 22);
      cal.set(Calendar.MINUTE, 0);
      cal.set(Calendar.SECOND, 0);

      Intent myIntent = new Intent(Main.this, Receiver.class);
      pendingIntent = PendingIntent.getBroadcast(Main.this, 0, myIntent,0);

      AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
      alarmManager.set(AlarmManager.RTC, cal.getTimeInMillis(), pendingIntent);
    }
}

Receiver.java

public class Receiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
       Toast.makeText(context, "I'm running", Toast.LENGTH_SHORT).show();
    }   
}

AndroidManifest.xml 还包含<receiver android:name=".Receiver"/>

因此,根据我的阅读,无论应用程序是否实际运行,只要在纽约晚上 10 点,上述代码都应该显示toast。目前,它什么也不做,即使应用程序正在运行。看起来 Receiver 类甚至没有被调用。我错过了什么?

【问题讨论】:

    标签: java android alarmmanager android-pendingintent


    【解决方案1】:

    您是否使用意图过滤器注册您的接收器? 如下所示

            <intent-filter android:priority="2147483647" >
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
    

    【讨论】:

    • 对不起。我不明白。请举个例子。
    • 再次抱歉。你能解释一下我应该把这个intent-filter放在清单中的什么地方吗? android:priority 是什么,为什么将其设置为该数字? android.net.conn.CONNECTIVITY_CHANGE 正是我应该复制的内容,还是在我的情况下应该是其他内容?
    【解决方案2】:

    我发现了问题(正如here 向我暗示的那样):我的Main.javaReceiver.java 文件没有放在同一个包中。我不明白这背后的逻辑。我喜欢将我的 java 文件分成不同的包以用于组织目的,但显然 Android 不喜欢这样。

    如果有人能告诉我如何使用 src 下 2 个不同包/文件夹中的 java 文件执行上述操作,我会给出正确答案。

    【讨论】:

    • 你的答案是正确的,现在你在问另一个。恕我直言,您应该发布另一个问题,但不是在这里。 1Q=1A
    猜你喜欢
    • 2020-11-27
    • 2022-06-22
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多