我有这个广播接收器,但它不适用于很多设备。 (在某些设备中,当屏幕关闭时不起作用)。
BoradcastReceiver类:
public class CheckService2 extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
int maxVolume = audio.getStreamMaxVolume(AudioManager.STREAM_ALARM);
audio.setStreamVolume(AudioManager.STREAM_RING,maxVolume,0);
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Intent intent3 = new Intent(context,Main.class);
PendingIntent intent2 = PendingIntent.getActivity(context, 1,
intent3, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.icon)
.setContentTitle("Litner Box").setSound(notification,AudioManager.STREAM_RING)
.setPriority(Notification.PRIORITY_HIGH)
.setContentText("List is ready to study!")
.setContentIntent(intent2).setAutoCancel(true);
NotificationManager mNotificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(0, mBuilder.build());
}
服务启动功能:
private void startService(){
AlarmManager am = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.HOUR, 3);
Intent intent = new Intent(context, CheckService2.class);
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);//+(3*3600*1000)
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
}
我的权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
广播声明:
<receiver android:name=".CheckService2">
</receiver>
感谢您的建议。