为什么通知不起作用?

例如,我想创建一个每 5 分钟工作一次的通知。为此,我使用 BroadCastReceiver。这是我的代码:

   public void notifyMe()
   Calendar calendar = Calendar.getInstance() ;

    calendar.set(Calendar.HOUR,0);

    calendar.set(Calendar.MINUTE,5);

    calendar.set(Calendar.SECOND,0);


    Log.d("tagger",calendar.getTime().toString());



    Intent intent = new Intent(this,MyBroadcastReceiver.class);

    PendingIntent sender = PendingIntent.getBroadcast(this,0,intent,PendingIntent.FLAG_CANCEL_CURRENT);

    AlarmManager am = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);

    am.setInexactRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),5*60*1000,sender);
   }

也适用于接收器:

public class MyBroadcastReceiver extends BroadcastReceiver {

private static final int NOTIFY_ID = 101;



@Override
public void onReceive(Context context, Intent intent) {

    Log.d("BroadcastReceiver", "debut receive");


    Intent resultIntent  =  new Intent(context,DetailActivity.class) ;

    PendingIntent resultPendingIntent = PendingIntent.getActivity(context,
            0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);

    Notification.Builder mBuilder = new Notification.Builder(context)
            .setContentTitle("title")
            .setContentText("some text");

    mBuilder.setAutoCancel(true);

    mBuilder.setContentIntent(resultPendingIntent);

    int id = 001 ;

    NotificationManager mNotifyManager = (NotificationManager)context.getSystemService(Application.NOTIFICATION_SERVICE);

    mNotifyManager.notify(id,mBuilder.build());
}
}

显现:

   <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:name=".PrefsApplication"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

        ></activity>

    <receiver android:name=".MyBroadcastReceiver">



    </receiver>
</application>

什么不起作用?我没有忘记将接收器添加到清单中。我需要使用 Service 而不是 Receiver?

费杜斯·艾哈迈德

notifyMe()设置重复闹钟的更新方法如下:

public void notifyMe()

    // Current time
    Calendar calendar = Calendar.getInstance() ;
    calendar.setTimeInMillis(System.currentTimeMillis());
    calendar.set(Calendar.SECOND, 0);

    Log.d("tagger", calendar.getTime().toString());

    Intent intent = new Intent(this, MyBroadcastReceiver.class);    
    PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    // Set alarm
    AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
    am.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 5*60*1000, sender);

    // Or you can also use
    //am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 5*60*1000, sender);
}    

更新MyBroadcastReceiver如下:

public class MyBroadcastReceiver extends BroadcastReceiver {

    private static final int NOTIFY_ID = 101;

    @Override
    public void onReceive(Context context, Intent intent) {

        Log.d("BroadcastReceiver", "debut receive");

        // Intent to start activity 
        Intent resultIntent  =  new Intent(context, DetailActivity.class) ;
        PendingIntent resultPendingIntent = PendingIntent.getActivity(context,
            0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        Notification mNotification = new Notification.Builder(context)
            .setContentTitle("Title")
            .setContentText("Some text")
            .setSmallIcon(R.mipmap.ic_launcher)
            .setAutoCancel(true)
            .setContentIntent(resultPendingIntent).build();


        NotificationManager mNotifyManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        mNotifyManager.notify(NOTIFY_ID, mNotification);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章