【问题标题】:How to call onReceive from onReceive of another BroadcastReceiver in Android?如何从 Android 中另一个 BroadcastReceiver 的 onReceive 调用 onReceive?
【发布时间】:2016-11-26 07:26:29
【问题描述】:

我正在开发一个 android 应用程序,其中我需要从另一个 BroadcastReceiver 的 onReceive 调用 Alarmmanager 的 onReceive 方法,即 Internet 连接。可能吗 ?或者我应该在另一个广播接收器中复制我所有的东西?

【问题讨论】:

    标签: android alarmmanager android-broadcastreceiver android-connectivitymanager


    【解决方案1】:

    你可以从 onReceive 中创建一个新的意图来触发另一个广播接收器

    @Override
    public void onReceive(Context context, Intent intent) {
        Intent newIntent = new Intent("com.domain.yourboardcastreceiver");
        context.sendBroadcast(newIntent);
    }
    

    【讨论】:

      【解决方案2】:

      在 Internet Connectivity 广播接收器的 OnReceive(..) 方法中,您可以设置警报,这就是警报管理器将被触发的方式,例如:

      @Override
      public void onReceive(Context context, Intent intent) {
          Intent myIntent = new Intent(getBaseContext(), **AlarmReceiver**.class);
          PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), 0, myIntent, 0);
          AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
          Calendar calendar = Calendar.getInstance();
          calendar.setTimeInMillis(System.currentTimeMillis());
          alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
      }
      

      不要忘记在清单文件中注册警报管理器的接收器。

      希望对你有帮助!

      【讨论】:

      • 谢谢,不过我用过@Rex Lam 的解决方案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多