广播接收器不触发

我正在编写一个应用程序,一旦它到达某个日期/时间就会触发一个特定的方法。但是,我的广播接收器没有启动……我可以看到警报已设置。


我在活动中的方法:


 private void setAlarm(Date date){


        Intent activate = new Intent(this, Alarm.class);

        AlarmManager alarms ;

        Calendar cal = new GregorianCalendar();

        cal.setTimeInMillis(date.getTime());

        PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, activate, 0);

        alarms = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);

        Log.d("ALARM","Setting alarm");

        alarms.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), alarmIntent);

        Log.d("ALARM","Setting time "+cal.getTimeInMillis());

    }

我的广播接收器:


public class Alarm extends BroadcastReceiver {


    @Override

    public void onReceive(Context context, Intent intent) {

        Log.d("ALARM", "RING RING");


    }

}

我在<application>标签中的清单:


<receiver android:name=".Alarm" android:process=":remote" >

        <intent-filter>

            <action android:name="com.package.feature.subpackage.arrangealarm.ALARM_ACTION"/>

        </intent-filter>

    </receiver>

有谁知道为什么这不开火?


www说
浏览 117回答 1
1回答

MM们

您的代码似乎没有任何问题(我复制了该代码段并让 Android Studio 生成了一个 BroadcastReceiver,我android:process=":remote"像您一样为其设置了广播接收器)。当我运行应用程序时,会BroadcastReceiver触发,但是当我在 Logcat 设置(右侧)中选择“无过滤器”时,我只能看到相应的 Logcat 条目,而不是当我选择“仅显示选定的应用程序”时。发生这种情况是因为您使用android:process=":remote".&nbsp;BroadcastReceiver 将在“主”应用程序进程之外的另一个进程中运行,因此“RING RING”将出现在另一个进程 ID 下。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java