我AlarmManager没有得到所谓的 [英] My AlarmManager not getting called

查看:179
本文介绍了我AlarmManager没有得到所谓的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想尽code这是我从#1或从任何地方获得,但在 AlarmManager 没有获得成功,我的广播接收器甚至没有得到调用。这里是我的code:

  //我AlarmManager是MyDB.Class扩展SQLiteOpenHelper {                的System.out.println(内部AlarmManager);
                //创建报警经理
                AlarmManager alarmMgr0 =(AlarmManager)mContext
                        .getSystemService(Context.ALARM_SERVICE);                的System.out.println(内部alarmMgr0+ alarmMgr0);                //创建挂起的意图和放大器;其注册到您的报警通知
                //类
                意图int​​ent0 =新意图(mContext,AlarmReciever.class);
                intent0.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent0.putExtra(req_ code,V); // PI);
                的PendingIntent pendingIntent0 = PendingIntent.getBroadcast(
                        mContext,V,intent0,0);
                的System.out.println(内部pendingIntent0
                        + pendingIntent0);                //设置计时器你想报警工作
                日历timeOff9 = Calendar.getInstance();
                timeOff9.add(Calendar.DAY_OF_YEAR,scheduleDao1.getMeetingDay());
                的System.out.println(内部如果getDay
                        + scheduleDao1.getDay());
                timeOff9.set(的Calendar.MONTH,scheduleDao1.getMeetingMonth());
                的System.out.println(内部如果得到月
                        + scheduleDao1.getMonth());
                timeOff9.set(Calendar.YEAR,scheduleDao1.getMeetingYear());
                的System.out.println(内部如果得到年
                        + scheduleDao1.getYear());                如果(scheduleDao1.getFromTimeHr()!= 00){
                    的System.out.println(内部如果getFromTimeHr
                            +(scheduleDao1.getFromTimeHr() - 1));                    timeOff9.set(Calendar.HOUR_OF_DAY,
                            scheduleDao1.getFromTimeHr() - 1);
                }
                timeOff9.set(Calendar.MINUTE,
                        scheduleDao1.getFromTimeMin());
                的System.out.println(内部getMeetingFromTimeMin
                        + scheduleDao1.getFromTimeMin());
                timeOff9.set(Calendar.SECOND,0);                //设置定时器作为RTC唤醒报警管理器对象
                alarmMgr0.set(AlarmManager.RTC_WAKEUP,
                        timeOff9.getTimeInMillis(),pendingIntent0);                contents.put(ALARM_REQUEST_ code,V);                //}

我的接收器类是在这里(不得到甚至称)

 公共类AlarmReciever扩展广播接收器{
    上下文mContext;
    INT REQUEST_ code = 0;@覆盖
    公共无效的onReceive(上下文的背景下,意图意图){
        // TODO自动生成方法存根
        mContext =背景;
        的System.out.println(内部的onReceive);
        mContext =背景;
        REQUEST_ code = intent.getIntExtra(req_ code,0);
        的System.out.println(内部REQUEST_ code+ REQUEST_ code);//捆绑额外= intent.getExtras();
// REQUEST_ code = extras.getInt(req_ code);
//的System.out.println(内部REQUEST_ code+ REQUEST_ code);      }
}

和我的清单code是这样的....

 


<接收机器人:名字=。AlarmReciever
            机器人:启用=真/>
    < /用途>    <使用许可权的android:NAME =android.permission.CALL_PHONE/>
    <使用许可权的android:NAME =android.permission.VIBRATE/>
<使用许可权的android:NAME =android.permission.WAKE_LOCK/>

我没有得到什么错误与这些code,请别人帮我在这里。


解决方案

最后我得到了我想要的,与@kgandroid和放大器的帮助; @rainash
在这里,我现在发布我解决code。这是工作的罚款,我和放大器;显示通知。
我也可以在这里设置的多个AlarmManager 与我所需要的时间。

\r
\r

//创建报警经理\r
   AlarmManager alarmMgr0 =(AlarmManager)mContext\r
.getSystemService(Context.ALARM_SERVICE);\r
\r
//创建挂起的意图和放大器;其注册到您的报警通知\r
//类\r
意图int​​ent0 =新意图(报警);\r
intent0.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);\r
intent0.putExtra(req_ code,V); // PI);\r
的PendingIntent pendingIntent0 =的PendingIntent\r
.getBroadcast(mContext,V,intent0,\r
PendingIntent.FLAG_UPDATE_CURRENT);\r
\r
//设置计时器你想报警工作\r
日历timeOff9 = Calendar.getInstance();\r
timeOff9.setTimeInMillis(System.currentTimeMillis的());\r
timeOff9.set(scheduleDao1.getYear(),\r
(scheduleDao1.getMonth()) - 1,//月开始从0\r
scheduleDao1.getDay(),\r
(scheduleDao1.getFromTimeHr()) - 1,//我要1小时前通知者\r
scheduleDao1.getFromTimeMin(),0);\r
\r
//长dateWeGet = Long.valueOf(dateString);\r
   //设置定时器作为RTC唤醒报警管理器对象\r
alarmMgr0.set(AlarmManager.RTC_WAKEUP,\r
timeOff9.getTimeInMillis(),pendingIntent0);\r
\r
contents.put(ALARM_REQUEST_ code,V);

\r

\r
\r

I try every code which I got from Stackoverflow or from anywhere, but not getting success in AlarmManager, my BroadcastReceiver not even getting called. Here is my code:

    //My AlarmManager is in MyDB.Class extends SQLiteOpenHelper{

                System.out.println("Inside AlarmManager");
                // Create alarm manager
                AlarmManager alarmMgr0 = (AlarmManager) mContext
                        .getSystemService(Context.ALARM_SERVICE);

                System.out.println("Inside alarmMgr0     " + alarmMgr0);

                // Create pending intent & register it to your alarm notifier
                // class
                Intent intent0 = new Intent(mContext, AlarmReciever.class);
                intent0.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent0.putExtra("req_code", v); // pI);
                PendingIntent pendingIntent0 = PendingIntent.getBroadcast(
                        mContext, v, intent0, 0);
                System.out.println("Inside pendingIntent0     "
                        + pendingIntent0);

                // set timer you want alarm to work
                Calendar timeOff9 = Calendar.getInstance();
                timeOff9.add(Calendar.DAY_OF_YEAR, scheduleDao1.getMeetingDay());
                System.out.println("Inside if getDay    "
                        + scheduleDao1.getDay());
                timeOff9.set(Calendar.MONTH, scheduleDao1.getMeetingMonth());
                System.out.println("Inside if getMonth    "
                        + scheduleDao1.getMonth());
                timeOff9.set(Calendar.YEAR, scheduleDao1.getMeetingYear());
                System.out.println("Inside if getYear    "
                        + scheduleDao1.getYear());

                if (scheduleDao1.getFromTimeHr() != 00) {
                    System.out.println("Inside if getFromTimeHr    "
                            + (scheduleDao1.getFromTimeHr() - 1));

                    timeOff9.set(Calendar.HOUR_OF_DAY,
                            scheduleDao1.getFromTimeHr() - 1);
                }
                timeOff9.set(Calendar.MINUTE,
                        scheduleDao1.getFromTimeMin());
                System.out.println("Inside getMeetingFromTimeMin     "
                        + scheduleDao1.getFromTimeMin());
                timeOff9.set(Calendar.SECOND, 0);

                // set that timer as a RTC Wakeup to alarm manager object
                alarmMgr0.set(AlarmManager.RTC_WAKEUP,
                        timeOff9.getTimeInMillis(), pendingIntent0);

                contents.put(ALARM_REQUEST_CODE, v);

                //}

My Receiver class is here (Which is not get even called)

public class AlarmReciever extends BroadcastReceiver {
    Context mContext;
    int request_code = 0;

@Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        mContext = context;
        System.out.println("Inside onReceive");
        mContext = context;
        request_code = intent.getIntExtra("req_code", 0);
        System.out.println("Inside request_code       " + request_code);

//      Bundle extras = intent.getExtras();
//      request_code = extras.getInt("req_code");
//      System.out.println("Inside request_code       " + request_code);

      }
}

And my Manifest code is like that....

.
.
.
<receiver android:name=".AlarmReciever" 
            android:enabled="true"/>
    </application>

    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />

I didn't get what is going wrong with these code please someone help me here.

解决方案

Finally i got What i want, with the help of @kgandroid & @rainash Here i post my Solve code now. which is working fine for me & Showing Notifications. And i also able to set here Multiple AlarmManager with my required time.

// Create alarm manager
   AlarmManager alarmMgr0 = (AlarmManager) mContext
		.getSystemService(Context.ALARM_SERVICE);
				
		// Create pending intent & register it to your alarm notifier
				// class
		Intent intent0 = new Intent("alarm");
		intent0.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		intent0.putExtra("req_code", v); // pI);
		PendingIntent pendingIntent0 = PendingIntent
				.getBroadcast(mContext, v, intent0,
						PendingIntent.FLAG_UPDATE_CURRENT);

		// set timer you want alarm to work
	Calendar timeOff9 = Calendar.getInstance();
	timeOff9.setTimeInMillis(System.currentTimeMillis());
	timeOff9.set(scheduleDao1.getYear(),
		(scheduleDao1.getMonth()) - 1,  //Months start from '0'
		scheduleDao1.getDay(),
	(scheduleDao1.getFromTimeHr()) - 1,//I want those notification before 1hr
			scheduleDao1.getFromTimeMin(), 0);

	// long dateWeGet = Long.valueOf(dateString);
   // set that timer as a RTC Wakeup to alarm manager object
		alarmMgr0.set(AlarmManager.RTC_WAKEUP,
				timeOff9.getTimeInMillis(), pendingIntent0);

contents.put(ALARM_REQUEST_CODE, v);

这篇关于我AlarmManager没有得到所谓的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆