راکت

Alarm Manager

بدون پاسخ

سلام دوستان من دارم دوره اندروید رو میگذرونم توی یه اپیکیشن که خودم درستش کردم یه مشکل دارم اونم اینکه من یه آلارم میخوام درست کنم که اگه گوشی خاموش روشن شد دوباره آلارم بده من این کار رو با 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>

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

ثبت پرسش جدید

پاسخ‌ها

0

هنوز پاسخی ثبت نشده

اولین نفری باشید که به این پرسش کمک می‌کند و مسیر حل مشکل را باز می‌کند.

اولین پاسخ را بنویسید

شاید پاسخ شما همین‌جا باشد

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام