(android) AlarmManager 似乎无法正常工作

(android) AlarmManager doesn't seem to be working

我正在尝试设置一个警报管理器,但它不起作用,我目前正在使用一个测试 AlarmReceiver,它应该会启动我的铃声。我不确定问题出在哪里,是否因为我在 Fragment 中而设置不同?

它目前设置为 5 分钟后响铃,我在某处看到这是最短时间,不确定是否属实。

对于完整的源代码,我已将项目上传到 github

以下是片段:

public class TaskFragment extends Fragment {
...
 @Override
    public void onPause() {
        super.onPause();

        Intent intent = new Intent(getContext(), AlarmReceiver.class);
        intent.putExtra("time", mTask.getReminder().getTime());

        PendingIntent alarmIntent = PendingIntent.getBroadcast(getContext(), 10, intent, 0);

        AlarmManager alarmManager = (AlarmManager) getContext().getSystemService(getContext().ALARM_SERVICE);
        alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 5 * 60 * 1000, alarmIntent);

        Log.i("Pending AlarmIntent", "Created");

下面是一个测试 AlarmReceiver:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.util.Log;

import java.util.Date;

/**
 * Created by rmatos on 12/08/17.
 */

public class AlarmReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(final Context context, Intent intent) {
        Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
        Ringtone ringtone = RingtoneManager.getRingtone(context, uri);
        ringtone.play();
}
}

清单:

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

<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>                     <!-- TODO: Implement alarm manager that works when phone restarted -->

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

    <activity android:name=".TaskListActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>

            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

    <activity
        android:name=".TaskPagerActivity"
        android:parentActivityName=".TaskListActivity">
        <intent-filter>
            <action android:name="android.intent.action.SET_ALARM" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>

        <receiver
            android:process=":remote"
            android:name=".AlarmReceiver"
            android:enabled="true"
            android:exported="true"/>
    </activity>


</application>

只需在 manifest.xml

中进行更改
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

    <activity android:name=".TaskListActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>

            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

    <activity
        android:name=".TaskPagerActivity"
        android:parentActivityName=".TaskListActivity">
        <intent-filter>
            <action android:name="android.intent.action.SET_ALARM" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
<receiver
            android:process=":remote"
            android:name=".AlarmReceiver"
            android:enabled="true"
            android:exported="true"/>

</application>

希望这对你有帮助..如果没有请告诉我