android - 警报(管理器)未调用广播接收器

标签 android broadcastreceiver alarmmanager android-pendingintent android-broadcastreceiver

您能找出闹钟响起时没有调用 BroadcastReceiver 的任何原因吗?如果我让警报启动一个明确的 Intent ,它就会正常工作并且我的 Activity 将打开。如果我设置了打开 BroadCastReceiver 的 Intent ,那么什么也不会发生,所以我认为我的接收器类或 list 可能有问题。以下是我设置闹钟的方法:

Intent intent = new Intent(this, AlarmBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 324, intent, PendingIntent.FLAG_UPDATE_CURRENT);
mAlarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
mAlarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);

这是我的广播接收器:

public class AlarmBroadcastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.e("MJH", "Alarm called...");
        Toast.makeText(context, "Alarm...", Toast.LENGTH_LONG).show();
    }
}

这是我的 list :

<?xml version="1.0" encoding="utf-8"?>
<manifest package="mjh.com.apod"
      xmlns:android="http://schemas.android.com/apk/res/android">

<!-- Required to act as a custom watch face. -->
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.SET_WALLPAPER"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<application
    android:name="android.support.multidex.MultiDexApplication"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>

            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
    <receiver
        android:name=".AlarmBroadcastReceiver"
        android:enabled="true"
        android:exported="true"
        android:process=":remote">
    </receiver>
</application>

非常感谢您抽出时间。

最佳答案

我认为您应该使用 PendingIntent.getBroadcast() 而不是 PendingIntent.getActivity()。

关于android - 警报(管理器)未调用广播接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41450802/

相关文章:

Android ACTION_DATE_CHANGED 广播

Android AlarmService 是怎样调度的?

android - 库不生成 jar 文件

android - 是否可以在将应用添加到商店后更改其 key ?

java - 如何更改添加到 View AndEngine 的 Sprite 的方向?

android - SecurityException : Permission Denial: not allowed to send broadcast android. intent.action.BATTERY_CHANGED

android - 如何将自定义 Intent 过滤器注册到 AndroidManifest.xml 中的广播接收器?

java - 从Service中的数据库获取数据

安卓。报警管理器。重复警报不触发,一段时间后,一次触发所有警报

android - 设备锁定一段时间后警报管理器不工作