AlarmManager主要用于定时,轮询启动一个intent。
android提供了四种类型的闹钟:
❑ ELAPSED_REALTIME
在指定的延时过后,发送广播,但不唤醒设备。
❑ ELAPSED_REALTIME_WAKEUP
在指定的演示后,发送广播,并唤醒设备
延时是要把系统启动的时间SystemClock.elapsedRealtime()算进去的,具体用法看代码。
❑ RTC
在指定的时刻,发送广播,但不唤醒设备
❑ RTC_WAKEUP
在指定的时刻,发送广播,并唤醒设备
public class MainActivity2 extends AppCompatActivity implements View.OnClickListener{
TextView text1;
TextView text2;
Button btn1;
Button btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = (Button) findViewById(R.id.btn1);
btn2 = (Button) findViewById(R.id.btn2);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn1:
startalarm();
break;
case R.id.btn2:
closealarm();
break;
}
}
private void closealarm() {
AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(getApplicationContext(), AlarmReceiver.class);
PendingIntent pendIntent = PendingIntent.getBroadcast(getApplicationContext(),
0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
//PendingIntent.getBroadcast==sendBroadcast
// 与上面的intent匹配(filterEquals(intent))的闹钟会被取消
alarmMgr.cancel(pendIntent);
}
private void startalarm() {
AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(getApplicationContext(), AlarmReceiver.class);
int requestCode = 0;
PendingIntent pendIntent = PendingIntent.getBroadcast(getApplicationContext(),
requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT);
// 5秒后发送广播,只发送一次
int triggerAtTime = (int) (SystemClock.elapsedRealtime() + 5 * 1000);
alarmMgr.set(AlarmManager.ELAPSED_REALTIME, triggerAtTime, pendIntent);
}
}
public class AlarmReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "alarm", Toast.LENGTH_SHORT).show();
}
}
参考 http://www.cnblogs.com/mengdd/p/3819806.html
还有一直容易忘记的新建dialog代码:
new AlertDialog.Builder(this).setTitle("请输入").setIcon(
android.R.drawable.ic_dialog_info)
.setNegativeButton("取消", null).show();
邮件服务 参考 http://blog.csdn.net/xanxus46/article/details/8296598
android如何发送邮件:
核心代码如下
Intent data=new Intent(Intent.ACTION_SENDTO);
data.setData(Uri.parse("mailto:qq10000@qq.com"));
data.putExtra(Intent.EXTRA_SUBJECT, "这是标题");
data.putExtra(Intent.EXTRA_TEXT, "这是内容");
startActivity(data);
首先构造一个Action为SENDTO的Action
其次创建一个Uri,他是一个mailto的邮件链接,也就是接收地址.
再通过Intent.EXTRA_SUBJECT和Intent.EXTRA_TEXT传递标题和文本的数据,记住,一定要使用这些常量,这是标准,否则Email客户端不认识,那样你传递的标题和文本就不起作用了。
然后就是startActivity进行打开,系统会根据Intent自动匹配找到能处理这个intent的应用,如图列表,有很多个,我们这里选择网易掌上邮,就打开了一个邮件发送界面,如我们所愿,邮件地址、标题和内容都在了,很成功.
intent中的数据传递是以Extra的方式进行put后传递的,然后在使用的时候getter取出使用。
发送附件的核心代码:改sendto为send,且加两行:
data.putExtra(Intent.EXTRA_STREAM, Uri.parse(“”));
data.setType(“text/plain”);
Intent data=new Intent(Intent.ACTION_SEND);
data.putExtra(Intent.EXTRA_EMAIL, new String[]{"ls8707@163.com"});
data.putExtra(Intent.EXTRA_SUBJECT, "这是标题");
data.putExtra(Intent.EXTRA_TEXT, "这是内容");
data.putExtra(Intent.EXTRA_STREAM, Uri.parse(""));
data.setType("text/plain");
startActivity(data);