在虛擬機上測試很OK,能夠在設置的延時時間產生效果,但是搬到真機就收不到效果,沒有反應!貼代碼!大家幫忙看看~~
AndroidManifest.xml的權限啊,接收器啊都有
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.BIND_DEVICE_ADMIN"
tools:ignore="ProtectedPermissions" />
<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=".activity.ScheduleActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".activity.ScheduleAddActivity"></activity>
<receiver android:name=".activity.ScheduleAddActivity$AlarmReceiver"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<intent-filter>
<action android:name="com.example.schedule.activity.ScheduleAddActivity.AlarmReceiver"/>
</intent-filter>
</receiver>
activity.java的部分關鍵代碼如下
Intent intent=new Intent(ALARM_EVENT);//鬧鐘服務意圖
//用於廣播的延遲意圖,廣播鬧鐘服務
PendingIntent pendIntent=PendingIntent.getBroadcast(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager= (AlarmManager) getSystemService(ALARM_SERVICE);//從系統服務中獲取鬧鐘服務
Calendar calendar=Calendar.getInstance();
if(alarm_type==6){
//延時提醒,當前時間之後10秒提醒
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND,3);//delay_time[alarm_type]
}else {
//提前提醒
calendar.set(2021,month,day,hour,minute,0);
calendar.add(Calendar.SECOND,-delay_time[alarm_type]*60);
}
//設置鬧鐘,1.模式是睡眠狀態下也叫醒,2.延遲時間、3.攜帶的廣播意圖
alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendIntent);
Log.d("當前時間秒",calendar.getTimeInMillis()+"");
這裏是接收處理代碼
private String ALARM_EVENT="com.example.schedule.activity.ScheduleAddActivity.AlarmReceiver";
public static class AlarmReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
mvibrator.vibrate(3000);
schedule_date.setText("收到收到");
Vibrator vibrator= (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(3000);//震動3秒
if(intent!=null){
Toast.makeText(context,"alarmreceive!",Toast.LENGTH_LONG).show();
}
}
}
然而最後也沒有收到。。。