Android闹钟管理器无法在某些设备上运行

时间:2017-03-01 05:00:35

标签: android alarmmanager

我有这个广播接收器,但它不适用于很多设备。 (在某些设备中,当屏幕关闭时不起作用)。

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>

感谢您的建议。

0 个答案:

没有答案
相关问题