代码之家  ›  专栏  ›  技术社区  ›  Ricardo

(安卓)AlarmManager似乎不工作

  •  0
  • Ricardo  · 技术社区  · 8 年前

    它目前设置为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>
    

    1 回复  |  直到 8 年前
        1
  •  1
  •   Lokesh Desai    8 年前

    只需在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>
    

    希望这能帮助你。如果没有,请告诉我

    推荐文章