简体   繁体   English

Android预定通知无法正常工作

[英]Android Scheduled Notification not working

I am building an android app to display recurring scheduled notification at a specified time of the day. 我正在构建一个android应用,以在一天的指定时间显示定期的定期通知。

For this I have created broadcastReceiver using following code: 为此,我使用以下代码创建了broadcastReceiver:

public class ScheduleNotification extends BroadcastReceiver {


    public static final int NOTIFICATION_ID = 1;

    @Override
    public void onReceive(Context context, Intent intent) {

        long when = System.currentTimeMillis();

        MainActivity mainActivity = new MainActivity();
        String _pasuram_number = mainActivity.get_pasuram_number();
        String[] _pasuram_str = mainActivity.get_dd_text(_pasuram_number).split(",");

        Log.d("VC", "Notification intent paasuram " + _pasuram_number);
        intent.putExtra("pasuramnumber", _pasuram_number);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

        Intent snoozeIntent = new Intent(context, MainActivity.class);
        PendingIntent piSnooze = PendingIntent.getService(context, 0, snoozeIntent, 0);

        NotificationCompat.Builder builder = new NotificationCompat.Builder(context);

        builder.setSmallIcon(R.drawable.ic_stat_name);
        builder.setContentIntent(pendingIntent);
        builder.setAutoCancel(true);
   builder.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_stat_name));

        builder.setContentTitle("Title of the notification");
        builder.setContentText(_pasuram_str[9]+"-"+_pasuram_str[11]);


        builder.setStyle(new NotificationCompat.BigTextStyle().bigText(_pasuram_str[0] + "-" + _pasuram_str[8]));

        Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

        NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(NOTIFICATION_ID, builder.build());

    }
} 

In the MainActivity added code to create alarm 在MainActivity中添加了创建警报的代码

private void createScheduledNotification(int days)
    {
        // Get new calendar object and set the date to now
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        // Add defined amount of days to the date
        calendar.set(Calendar.HOUR_OF_DAY, 6);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        //calendar.add(Calendar.HOUR_OF_DAY, days * 24);

        // Retrieve alarm manager from the system
        AlarmManager alarmManager = (AlarmManager) getApplicationContext().getSystemService(getBaseContext().ALARM_SERVICE);
        // Every scheduled intent needs a different ID, else it is just executed once
        int id = (int) System.currentTimeMillis();

        // Prepare the intent which should be launched at the date
        Intent intent = new Intent(this, ScheduleNotification.class);

        // Prepare the pending intent
        PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), id, intent, PendingIntent.FLAG_UPDATE_CURRENT);

        // Register the alert in the system. You have the option to define if the device has to wake up on the alert or not
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);


        //alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
    }

The code compiles fine and application runs, but scheduled notification does not appear as expected. 代码可以正常编译并运行应用程序,但是计划的通知未按预期出现。

In the manifest file added receiver as follows: 在清单文件中添加接收方,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.vaishnavism.eclass.dinamorudivyaprabandam" >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <!-- permission required to use Alarm Manager -->
        <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>

        <!-- Register the Alarm Receiver -->
        <receiver android:name="com.vaishnavism.eclass.dinamorudivyaprabandam.ScheduleNotification"/>
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".SettingsActivity"
            android:label="@string/title_activity_settings"
            android:parentActivityName=".MainActivity" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.vaishnavism.eclass.dinamorudivyaprabandam.MainActivity" />
        </activity>
    </application>

</manifest>

Any help to resolve the issue is greatly appreciated. 非常感谢您为解决该问题提供的帮助。

Thanks 谢谢

Try to use set your alarm like below : 尝试使用设置您的闹钟,如下所示:

 Calendar calendar = Calendar.getInstance();
                calendar.setTimeInMillis(System.currentTimeMillis());
                calendar.set(Calendar.HOUR_OF_DAY, 6);
                calendar.set(Calendar.MINUTE, 0);
                int interval = 1000 * 60 * 60 * 24;

              Intent myIntent = new Intent(yourActivity.this, ScheduleNotification .class);
              pendingIntent = PendingIntent.getBroadcast(UserDashBoardActivity.this, 0, myIntent,0);
              /* Repeating on every 24 hours interval */
              AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
              alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), interval, pendingIntent);

And you need to start an Alarm When the Device Boots. 并且您需要在设备启动时启动警报。

For more info refere here . 有关更多信息,请参见此处

Hope it will help you. 希望对您有帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM