这一天要做一个定时打电话功能的app
前面的主Activity中,从TimePicker中获取设定的时间,从EditText中获取电话号码
使用Calendar类用获取得到的时间初始化一个calendar对象
将其转换成毫秒数(因为AlarmManager设定时间要求是毫秒数)
在Intent中设定转移的class,加上时间数据
String number = edtCallNumber.getText().toString();
Intent intent = new Intent(MainActivity.this, timeReceiver.class);
intent.putExtra("CallNumber", number);
//设置Action
intent.setAction("com.fish.TIMINGCALL");
PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this,0, intent, 0);
//设置一次提醒闹钟
alarmManager.set(AlarmManager.RTC_WAKEUP, setTime, pendingIntent);</span>
alarmManager到达setTime时间之后就会发送一条“com.fish.TIMINGCALL“的广播
而到BroadcastReceiver中,重写的onReceiver函数获取要拨打的电话号码
String callNumber = intent.getStringExtra("CallNumber");</span>
我们知道,拨打电话功能一般都是使用Intent来执行,然而开启Intent的函数startActivity却报错
仔细看看发现,这个函数是需要Context也即是上下文,而这个函数本身就不是一个Acticity,所以会报错
那怎么办呢
仔细观察onReceiver函数我们能发现,这个函数除了传进来一个Intent对象,还有一个Context对象,而Activity正是Context的子类
所以,我猜测应该可以用Context启动Intent
context.startActivity(callIntent);</span>
好的没有报错,运行,发现停止工作,最后查询资料才发现,应该先要往要启动的Intent添加一个Flags
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);</span>
再次运行,程序运行正常