如果应用程序被杀,警报管理器不会触发

时间:2018-04-17 07:18:29

标签: android broadcastreceiver alarmmanager

我正在尝试创建一个计划应用程序。我正在使用闹钟管理器。应用程序处于活动状态时工作正常。如果我从最近的应用程序中删除了应用程序警报未触发。请让我解决我的问题。在此我附上了我的代码。

AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(SettingsPage.this, AlarmManagerForSettings.class);
i.putExtra("requestCode", "100");
i.putExtra("AlarmTag",id);
PendingIntent pi = PendingIntent.getBroadcast(SettingsPage.this, (int)id, i, 0);
am.cancel(pi); // cancel any existing alarms RTC_WAKEUP
am.setInexactRepeating(AlarmManager.RTC_WAKEUP, time, AlarmManager.INTERVAL_DAY, pi);
ComponentName receiver = new ComponentName(SettingsPage.this, AlarmManagerForSettings.class);
PackageManager pm = getPackageManager();
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                            PackageManager.DONT_KILL_APP);

广播接收器: -

public class AlarmManagerForSettings extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        String requestCode = "";
        String alarmTag = "";
        if (bundle != null) {
            requestCode = bundle.get("requestCode").toString();
            alarmTag = bundle.get("AlarmTag").toString();
        }
//Rest of code I wrote here
   }
}

清单: -

<receiver
  android:name=".AlarmManagerForSettings"
  android:enabled="true"
  android:exported="true">
  <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED"></action>
  </intent-filter>
 </receiver>

2 个答案:

答案 0 :(得分:1)

部分移动广播接收器未运行..如果广播未运行,请按照以下步骤操作: 在小米设备中,您只需将应用程序添加到自动启动列表,为此,请按照以下简单步骤操作:

  

1.在手机上打开安全应用程序。

     

2.点击权限,它会向您显示两个选项:自动启动和权限

     

3.点击自动启动,它会显示带有开关按钮的应用列表。

     

4.打开你的应用切换,你已经完成了!

How to get MIUI Security app auto start permission programmatically?

答案 1 :(得分:0)

将您的警报管理器代码写入粘性服务器类,并根据您的功能启动此服务。杀死应用程序后更新检查。