Alarm Manager

- 4 روز پیش
mahdi piri ( 120 تجربه )
4 روز پیش

سلام دوستان من دارم دوره اندروید رو میگذرونم توی یه اپیکیشن که خودم درستش کردم یه مشکل دارم اونم اینکه من یه آلارم میخوام درست کنم که اگه گوشی خاموش روشن شد دوباره آلارم بده من این کار رو با BroadcastReceiver انجام میدم اما هیچ آلارمی نمیده

کد broadcastReceiver:
public class MyBroadcast_Receiver extends BroadcastReceiver {
MyDataBase myDataBase;
private List<NoteModel> noteModels;
private List<PendingIntent> pendingIntents;
AlarmManager alarmManager;
private int requestCode=1001;
private boolean isPM=false;

@Override

public void onReceive(Context context, Intent intent) {
    if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {

        myDataBase = new MyDataBase(context);
        noteModels = new ArrayList<>();
        pendingIntents = new ArrayList<>();
        Cursor cursor = myDataBase.getRememberInfo(1);

        alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
            NoteModel model = new NoteModel();
            model.setId(cursor.getInt(0));
            model.setTitle(cursor.getString(1));
            model.setDesc(cursor.getString(2));
            model.setRemember(cursor.getInt(3));
            model.setDate(cursor.getString(4));
            model.setTime(cursor.getString(5));
            noteModels.add(model);
            Intent i = new Intent();
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            PendingIntent pendingIntent = PendingIntent.getActivity(context, requestCode, i, PendingIntent.FLAG_UPDATE_CURRENT);
            Calendar calendar = Calendar.getInstance();
            String time = model.getTime();
            String[] times = time.split(":");
            String date = model.getDate();
            String[] dates = date.split("/");
            if (Integer.parseInt(times[0]) > 12) {
                isPM = true;
            }
            calendar.set(Calendar.YEAR, Integer.parseInt(dates[0]));
            calendar.set(Calendar.MONTH, Integer.parseInt(dates[1]));
            calendar.set(Calendar.DAY_OF_MONTH, Integer.parseInt(dates[2]));
            calendar.set(Calendar.HOUR, isPM ? Integer.parseInt(times[0]) - 12 : Integer.parseInt(times[0]));
            calendar.set(Calendar.MINUTE, Integer.parseInt(times[1]));
            calendar.set(Calendar.AM_PM, isPM ? 1 : 0);
            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),1000,pendingIntent);
            pendingIntents.add(pendingIntent);
            requestCode++;
            isPM = false;

        }
    }
}

}

اینم از manifest:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<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=".AlarmActivity"></activity>
    <activity android:name=".SplashActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".Second_Activity" />
    <activity android:name=".MainActivity" />
    <receiver android:name=".MyBroadcast_Receiver"
        android:enabled="false"
        >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
            <action android:name="android.intent.action.QUICKBOOT_POWERON"/>
        </intent-filter>
    </receiver>
</application>

ممنون میشم کمکم کنید

برای ارسال پاسخ باید وارد سایت شوید