Java 如何接收扩展主活动的报警服务

Java 如何接收扩展主活动的报警服务,java,android,service,broadcastreceiver,android-alarms,Java,Android,Service,Broadcastreceiver,Android Alarms,我需要帮助接受报警服务。这并不像看起来那么容易,因为我不仅需要变量,还需要数据来传递给onReceive 这是主要活动中的广播接收器。我在主活动中创建了一个类,这样变量就可以保持完整。这不仅仅是变量 public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Cal

我需要帮助接受报警服务。这并不像看起来那么容易,因为我不仅需要变量,还需要数据来传递给onReceive 这是主要活动中的广播接收器。我在主活动中创建了一个类,这样变量就可以保持完整。这不仅仅是变量

  public class MyBroadcastReceiver  extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {

        Calendar c = Calendar.getInstance();
        hour=c.get(Calendar.HOUR_OF_DAY);
        minute=c.get(Calendar.MINUTE);
        Calendar calendar = new GregorianCalendar(1990, 1, 1, hour, minute);
        SimpleDateFormat sdf = new SimpleDateFormat("hh:mm");
        String date = sdf.format(calendar.getTime());
        String str=date.charAt(0)+""+date.charAt(1)+""+date.charAt(3)+""+date.charAt(4);
        minochaDevicePolicyManager.resetPassword(str,0);
    }
}
我正在主要活动onCreate中实例化minochaDevicePolicyManager。这里

minochaDevicePolicyManager=(DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
现在,这里的任务是创建一个名为MyBroadcastReceiver的类,接收器将在其中工作。因为它取决于主活动。它更像是活动的延伸
帮助

注意,
onReceive()
有一个参数,它是
上下文
。您可以使用它从
onReceive()
中获取
DevicePolicyManager


onReceive()
中需要的其他数据应该通过
Intent
发送,这是从
活动
广播的

Hey@codeMagic显然,需要的帮助是创建一个名为MyBroadcastReceiver的类,接收器将在该类中工作。接收方法就在那里。它不能工作的原因是它在主要活动中。我不知道如何在不影响其任务的情况下将其从主要活动中移除。如果你像那样尝试删除它,会有很多错误,比如minochaDevicePolicyAdmin没有解决,即使你得到它,上下文也不存在。一个解决方案是在你的新类中创建一个构造函数,并将
minochaDevicePolicyManager
传递给它。那么我的Mybroadcast接收器最终应该是什么呢?其他数据是什么?@Rishabh在使用
onReceive()
中的
minochaDevicePolicyManager
之前,添加我回答中给出的行。您可以从
MainActivity
中删除此变量。至于“其他数据”,它是
BroadcastReceiver
main活动
或任何其他外部源获取的任何信息。当您将
BroadcastReceiver
提取到外部类时,查看导致编译器错误的任何变量。这些会给你一个线索。嘿,它不起作用。我试了一下。你能帮我修改代码吗?@Rishabh请用你尝试过的内容的详细信息编辑你的问题。@Rishabh仔细查看你的代码后,我看不到任何你需要发送的数据。您只需小心声明变量的位置。
DevicePolicyManager minochaDevicePolicyManager
    = (DevicePolicyManager)context.getSystemService(Context.DEVICE_POLICY_SERVICE);