android中的AlarmManager和邮件服务

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); 
posted @ 2016-06-28 17:53  Tesi1a  阅读(139)  评论(0编辑  收藏  举报