Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Alarm Receiver and Android Manifest

I've found several tutorials about setting the alarm receiver to send a toast message in set intervals. and i've been following the code and broken down my own project into 3 classes.

the HelloDroidActivity.java is:

package com.example.helloandroid;

import java.util.Calendar;

import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;

import com.example.helloandroid.alarms.MyAlarmReciever;

public class HelloDroidActivity extends Activity {
/** Called when the activity is first created. */

public static int RTC_WAKEUP;
public static long INTERVAL_FIFTEEN_MINUTES;

private AlarmManager alarmMgr;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TextView tv = new TextView(this);
    tv.setText("Hello, Krishneel");
    setContentView(tv);
    Toast.makeText(this, "Alarm went off", Toast.LENGTH_SHORT).show();

    Log.d("OnCreate", "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd");
    alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(this, MyAlarmReciever.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
            intent, PendingIntent.FLAG_UPDATE_CURRENT);
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    calendar.add(Calendar.SECOND, 5);
    alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP,
            calendar.getTimeInMillis(), 7000, pendingIntent);

}
}

also the MyAlarmReciever.java(i am already aware of the spelling mistake on the name):

package com.example.helloandroid.alarms;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;

public class MyAlarmReciever extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub

        Log.e("onReceive", "ladskjflsakjdflskjdflskjdfslkjdflasdf");
        Toast.makeText(context, "OnReceive alarm test", Toast.LENGTH_SHORT).show();
    }
}

and the Android Manifest which looks like this :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.helloandroid"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="7" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name="com.example.helloandroid.HelloDroidActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver android:name="AlarmReceiver">
            <intent-filter>
                <action android:name="com.example.helloandroid.alarms" />
            </intent-filter>
        </receiver>
    </application>

</manifest>

I have read that in order to get the project to receive my alarmReceiver java class I need to edit the manifest with a new receiver. but I'm fairly new to XML and dont know which direction to take.

like image 860
kprasad89 Avatar asked May 03 '12 22:05

kprasad89


People also ask

What is the use of alarmmanager in Android?

Android AlarmManager is a class that provides access to alarm services of the system. Through this, it lets us schedule the application to run at a particular time. As soon as the alarm goes off, the system broadcasts the intent registered for it.

How to set exact alarms on Android 12?

To make sure that the effective usage of system resources, Android 12 requires the “Alarms & reminders” special app access if apps that target Android 12 want to set exact alarms. SCHEDULE_EXACT_ALARM permission needs to be added in the manifest to get this special app access. Exact alarms should only be used for user-facing features.

What is the name of my alarm receiver?

There is already a receiver that you have defined in your manifest file. But the name is not correct see the name needs to be the full class name i.e the package.RecieverName. And in your case the name of your receiver is MyAlarmReciever.

How do I set alarms and reminders in the app?

"Alarms & reminders" special app access page in system settings, where users can allow your app to set exact alarms. If necessary, you can send users to the Alarms & reminders screen in system settings, as shown in figure 1. To do so, complete the following steps:


1 Answers

There is already a receiver that you have defined in your manifest file. But the name is not correct see the name needs to be the full class name i.e the package.RecieverName. And in your case the name of your receiver is MyAlarmReciever. So the receiver will be defined as follows

<receiver android:name=".alarms.MyAlarmReciever">
    <intent-filter>
        <action android:name="com.example.helloandroid.alarms" />
    </intent-filter>
</receiver>
like image 182
Gaurav Sarma Avatar answered Oct 11 '22 17:10

Gaurav Sarma