`

java 定时群发邮件 防止定为垃圾邮件

    博客分类:
  • java
阅读更多

package com.wzh.mail.timer;

import java.util.Timer;

public class TestTimer {

public static void main(String[] args){
   /*Timer t = new Timer();
   t.schedule(new MailTimerTask(), 0, 15*1000);*/
  
   String title = "[彩票]彩民村买100送100,更有专家助您中500万!";
   String content = "<table width='780' border='0' align='center' style=' margin:50px 0 27px 0' cellpadding='0' cellspacing='0'>"+
"<tr><td height='62' align='left' bgcolor='#FF6600'><img src='http://buy.caimincun.com/images/mail_3.jpg' width='356' height='44' alt='' style='padding:0 0 0 20px;' /></td><td align='right' valign='top' bgcolor='#FF6600'><img src='http://buy.caimincun.com/images/mail_5.jpg' alt='' width='258' height='33' border='0' usemap='#Map' style='padding-top:5px;' /></td></tr>"+
"<tr><td colspan='2' bgcolor='#FFCD24'>"+
"<table width='724' border='0' style=' margin:16px 0 27px 0' align='center' cellpadding='0' cellspacing='0'>"+
      "<tr><td><img src='http://buy.caimincun.com/images/mail_10.jpg' width='724' height='70' alt='' /></td></tr>"+
     "<tr><td><img src='http://buy.caimincun.com/images/mail_12.jpg' alt='' width='724' height='103' border='0' usemap='#Map2' /></td></tr>"+
      "<tr><td><img src='http://buy.caimincun.com/images/mail_13.gif' width='724' height='97' alt='' /></td></tr>"+
      "<tr><td><img src='http://buy.caimincun.com/images/mail_14.gif' alt='' width='724' height='159' border='0' usemap='#Map3' /></td></tr>"+
      "<tr><td><img src='http://buy.caimincun.com/images/mail_15.gif' width='724' height='98' alt='' /></td></tr>"+
      "<tr><td><img src='http://buy.caimincun.com/images/mail_16.gif' width='206' height='137' alt='' /><img src='http://buy.caimincun.com/images/mail_17.gif' alt='' width='518' height='137' border='0' usemap='#Map4' /></td></tr>"+
      "<tr><td><img src='http://buy.caimincun.com/images/mail_18.gif' width='724' height='95' alt='' /></td></tr>"+
      "<tr><td><img src='http://buy.caimincun.com/images/mail_19.gif' alt='' width='724' height='140' border='0' usemap='#Map5' /></td></tr>"+
      "<tr><td><img src='http://buy.caimincun.com/images/mail_20.gif' alt='' width='724' height='63' border='0' usemap='#Map6' /></td></tr>"+
    "</table></td></tr>"+
"<tr><td height='52' align='left' bgcolor='#FF6600'><img src='http://buy.caimincun.com/images/mail_22.gif' width='129' height='27' alt='' /></td><td align='center' bgcolor='#FF6600'><img src='http://buy.caimincun.com/images/mail_24.gif' width='192' height='27' alt='' /></td></tr>"+
"</table>"+
"<map name='Map' id='Map'><area shape='rect' coords='3,12,56,26' href='http://buy.caimincun.com/index.jsp' target='_blank' /><area shape='rect' coords='81,11,111,26' href='http://buy.caimincun.com/inc/admin_login.jsp ' target='_blank' /><area shape='rect' coords='135,10,189,26' href='http://buy.caimincun.com/inc/reg.jsp' target='_blank' /><area shape='rect' coords='202,11,254,26' href='http://buy.caimincun.com/about/about.htm ' target='_blank' /></map>"+
"<map name='Map2' id='Map2'><area shape='rect' coords='249,49,397,70' href='http://buy.caimincun.com/inc/tzz_active.htm ' target='_blank' /></map>"+
"<map name='Map3' id='Map3'><area shape='rect' coords='285,104,375,135' href='http://buy.caimincun.com/inc/reg.jsp ' target='_blank' /></map>"+
"<map name='Map4' id='Map4'><area shape='rect' coords='247,58,337,88' href='http://buy.caimincun.com/index.jsp ' target='_blank' /></map>"+
"<map name='Map5' id='Map5'><area shape='rect' coords='352,85,441,112' href='http://sms.zhcw.com/ ' target='_blank' /></map>"+
"<map name='Map6' id='Map6'><area shape='rect' coords='284,18,436,35' href='http://buy.caimincun.com/inc/tzz_active.htm ' target='_blank' /></map>";
   /*"<table>" +
   "<tr><a href='http://buy.caimincun.com' target='blank'><img src='http://buy.caimincun.com/images/tzz_active_01.gif' border='0'/></a></tr>" +
   "<tr><a href='http://buy.caimincun.com' target='blank'><img src='http://buy.caimincun.com/images/tzz_active_02.gif' border='0'/></a></tr>"+
   "<tr><a href='http://buy.caimincun.com' target='blank'><img src='http://buy.caimincun.com/images/tzz_active_03.gif' border='0'/></a></tr>" +
   "<tr><a href='http://buy.caimincun.com' target='blank'><img src='http://buy.caimincun.com/images/tzz_active_04.gif' border='0'/></a></tr>"+
   "<tr><a href='http://buy.caimincun.com' target='blank'><img src='http://buy.caimincun.com/images/tzz_active_05.gif' border='0'/></a></tr>"+
   "<tr><a href='http://buy.caimincun.com' target='blank'><img src='http://buy.caimincun.com/images/tzz_active_06.gif' border='0'/></a></tr>"+
   "</table>";*/
   String userName = "wmq534";
   String inFilePath ="F:/volume1.xls";
   String outFilePath="F:/test.txt";
   Timer t = new Timer();
   t.schedule(new MailTimerTask(title,content,userName,inFilePath,outFilePath), 0, 20*1000);
}
}

package com.wzh.mail.util;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

public class FileUtil {
Workbook workbook = null;
Sheet sheet = null;
/**
*<br>方法说明:读取excel文件一行数据
*<br>输入参数:int row指定的行数
*<br>返回类型:String〔〕结果数组
*/
public String[] readLine(int row){
      try{
        //获取数据表列数
        int colnum = sheet.getColumns();
        String[] rest = new String[colnum];
        for(int i = 0; i < colnum; i++){
          String sTemp = read(i,row);
          if(sTemp!=null)
           rest[i] = sTemp;
        }
        return rest;
      }catch(Exception e){
        System.out.println("readLine err:"+e);
        workbook.close();
        return null;
      }
}
/**
*<br>方法说明:读取excel的指定单元数据
*<br>输入参数:
*<br>返回类型:
*/
public String read(int col, int row){
      try{
        //获得单元数据
        Cell a2 = sheet.getCell(col,row);
        String rest = a2.getContents();
        return rest;
      }catch(Exception e){
        System.out.println("read err:"+e);
        workbook.close();
        return null;
      }
}
  
public List readExcel(String url) {
List list = new ArrayList();
   File filename = new File(url);
   String parameter = "";
   try {
    workbook = Workbook.getWorkbook(filename);
    sheet = workbook.getSheet(0);// 第1个sheet
    Cell c = null;
    int row = sheet.getRows();// 总行数
    System.out.println("总行数"+row);
    int col = sheet.getColumns();// 总列数
    System.out.println("总列数 "+col);
    for(int j=0;j<row;j++){
     for (int i = 0; i < col; i++) {
      parameter = sheet.getCell(i, j).getContents();
//      System.out.println(parameter);
      list.add(parameter);
     }
    }
    System.out.println("--------------------------------------");
    return list;
}catch(Exception e){
   e.printStackTrace();
   System.out.println("readLine err:"+e);
        workbook.close();
        return null;
}

}

/**
*<br>方法说明:写入文件操作
*<br>输入参数:
*<br>返回类型:
*/
public void write(String outFilePath,String username,String email){
      try{
          //创建一个可写入的excel文件对象
          WritableWorkbook workbook = Workbook.createWorkbook(new File(outFilePath));
          //使用第一张工作表,将其命名为“午餐记录”
          WritableSheet sheet = workbook.createSheet("发送记录", 0);
          //表头
          Label label0 = new Label(0, 0, "发送时间");
          sheet.addCell(label0);
          Label label1 = new Label(1, 0, "用户名");
          sheet.addCell(label1);
          Label label2 = new Label(2, 0, "电子邮件");
          sheet.addCell(label2);
          Label label3 = new Label(3, 0, "备注");
          sheet.addCell(label3);
          //格式化日期
          jxl.write.DateFormat df = new jxl.write.DateFormat("yyyy-dd-MM hh:mm:ss");
          jxl.write.WritableCellFormat wcfDF = new jxl.write.WritableCellFormat(df);
          jxl.write.DateTime labelDTF = new jxl.write.DateTime(0, 1, new java.util.Date(), wcfDF);
          sheet.addCell(labelDTF);
          //普通字符
          Label labelCFC = new Label(1, 1, "riverwind");
          sheet.addCell(labelCFC);
          //格式化数字
          jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");
          WritableCellFormat wcfN = new WritableCellFormat(nf);
          jxl.write.Number labelNF = new jxl.write.Number(2, 1, 13.1415926, wcfN);
          sheet.addCell(labelNF);
         
          
          jxl.write.Number labelNNF = new jxl.write.Number(3, 1, 10.50001, wcfN);
          sheet.addCell(labelNNF);
          //关闭对象,释放资源
          workbook.write();
          workbook.close();


      }catch(Exception e){
        System.out.println(e);
      }
}


public static void main(String[] args) {
   /* List list = new ArrayList();
   FileUtil t = new FileUtil();
   list = t.readExcel("F:/volume1.xls");
   for(Iterator it = (Iterator) list.iterator();it.hasNext();){
    System.out.println("list="+it.next());
   }
   }*/
   FileUtil t = new FileUtil();
//   t.write("F:/test.xls", "wmq534", "wmq534@126.com");
   t.writeFile("wmq534@126.com", "F:/test.txt");
}
@Override
public String toString() {
   return super.toString();
}

public boolean writeFile(String con,String path){
   File f=new File(path);
   try{
   FileWriter outFile=new FileWriter(f,true);

   BufferedWriter bufferOut=new BufferedWriter(outFile);

   bufferOut.write(con);

   bufferOut.newLine();

   bufferOut.flush();

   bufferOut.close();
  
   return true;

   } catch(IOException e){
    return false;
    }

   }

}

package com.wzh.mail.util;

import java.util.ArrayList;
import java.util.List;

import com.wzh.mail.base.MailSendParams;

public class SendMail {
List list = new ArrayList();
MailUtil mu = new MailUtil();
String outFileName ="";
MailSendParams msp = new MailSendParams();
public SendMail(){
  
}
public SendMail(String title,String content,String toUserName,String toEmail,String outFilePath){
   msp.setMailTitle(title);
   msp.setMailContent(content);
   msp.setMailToUserName(toUserName);
   msp.setMailTo(toEmail);
   mu.InitMailServerCfg(msp);
   mu.SetMailInfo(msp);
   this.outFileName = outFilePath;
}
public List readFile(String InFileName,String OutFileName){
   return list = mu.SendMailFromExcelFile2(InFileName,OutFileName);
}
public boolean sendMailOne(String email){
   boolean ifSend = mu.SendMail(email);
   if(ifSend){
    FileUtil t = new FileUtil();
    t.writeFile(email,outFileName);
   }
   return ifSend;
}

}

package com.wzh.mail.util;

import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import com.wzh.mail.base.IMailDaoImpl;
import com.wzh.mail.base.MailSendParams;

public class MailUtil extends IMailDaoImpl {
List mailList = new ArrayList();
/**
* 初始化邮件发送设置 参数见MailSendParams
*/
public void InitMailServerCfg(MailSendParams params){
   // TODO Auto-generated method stub
   this.smtpHost = "121.197.252.26";//smtp发送服务器的地址
   this.smtpUserName = "admin@caifdfcun.com";//smtp发送邮箱的用户名
   this.smtpUserPass = "********";//smtp发送邮箱的用户密码
   this.smtpFrom = "admin@caimfdun.com";//smtp发送邮箱名
   this.sendSplitTime = (long) 15;
  
}

/**
* 设置默认要发送邮件的信息 邮件标题 邮件内容 需要发送的用户称呼等
*/
public void SetMailInfo(MailSendParams params){
   this.mailTitle = params.getMailTitle();
   this.mailContent = params.getMailContent();
   this.mailToUserName = params.getMailToUserName();
   this.mailTo = params.getMailTo();//需要发送的邮箱
}

/**
* 从文件读出邮件list InFileName邮件list的输入文件, 格式txt
* OutFileName 邮件发送输出文件,记录发送文件的情况 格式 txt
* @param InFileName
* @param OutFileName
*/
public void SendMailFromTxtFile(String InFileName,String OutFileName){
  
  
}

/**
* 从文件读出邮件list InFileName邮件list的输入文件, 格式excel
* OutFileName 邮件发送输出文件,记录发送文件的情况 格式 txt
* @param InFileName
* @param OutFileName
*/
public List SendMailFromExcelFile2(String InFileName,String OutFileName){
   FileUtil t = new FileUtil();
   return mailList = t.readExcel(InFileName);
}

/**
* 按指定的邮件标题,内容发送邮件,可以提供指定个数的参数使用,
* 在邮件内容中使用特殊字符串代表间隔位,在此拼装邮件内容。
* @param mailParams
* @param params
*/
public void SendMailByParams(MailSendParams mailParams,String[] params){
   String email = params[0];
   String title = params[1];
   String content = params[2];
   String mailToUserName = params[3];
    try {
    Properties props = new Properties();
    props.put("mail.smtp.host", this.smtpHost);

   props.put("mail.smtp.connectiontimeout", "10000"); // 防止连接超时Timer一直等待
    props.put("mail.smtp.timeout", "10000");
    props.put("mail.smtp.auth", "true");
    Session ssn = Session.getInstance(props, null);
    MimeMessage message = new MimeMessage(ssn);
    InternetAddress fromAddress = new InternetAddress(this.smtpFrom);
    message.setFrom(fromAddress);
    InternetAddress toAddress = new InternetAddress(email);
    message.addRecipient(Message.RecipientType.TO, toAddress);
    message.setSubject(title);
    message.setContent(content, "text/html;charset=gbk");
    Transport transport;//当出现连接超时问题时,自动放弃当前连接,进行下一次的链接发送
{
     transport = ssn.getTransport("smtp");
     transport.connect(this.smtpHost, this.smtpUserName, this.smtpUserPass);
    } catch (RuntimeException e) {
     e.printStackTrace();
     return false;
    }
    if(!transport.isConnected()){
     System.out.println("连接超时"+email);
     return false;
    }    transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));
    transport.close();
System.out.println("邮件成功发送!");
   } catch (Exception e) {
    e.printStackTrace();
   }
}

/**
* 别的模块调用传入list参数
* @param mailList
*/
public void SetMailList(List mailList){
   this.mailList = mailList;
  
}

/**
* 从本地list发送邮件
*/
public void SendMails(){
  
}
public boolean SendMail(String email){
   try {
    Properties props = new Properties();
    props.put("mail.smtp.host", this.smtpHost);
    props.put("mail.smtp.auth", "true");
    Session ssn = Session.getInstance(props, null);
    MimeMessage message = new MimeMessage(ssn);
    InternetAddress fromAddress = new InternetAddress(this.smtpFrom);
    message.setFrom(fromAddress);
    InternetAddress toAddress = new InternetAddress(email);
    message.addRecipient(Message.RecipientType.TO, toAddress);
    message.setSubject(this.mailTitle);
    message.setContent(this.mailContent, "text/html;charset=gbk");
    Transport transport = ssn.getTransport("smtp");
    transport.connect(this.smtpHost, this.smtpUserName, this.smtpUserPass);
    transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));
    transport.close();
System.out.println("success:"+email);
    return true;
   } catch (Exception e) {
    e.printStackTrace();
    return false;
   }
}
  
  

/**
* 将一个邮件信息添加到发送list
* @param params
*/
public void AddMailList(MailSendParams params){
   mailList.add(params);
}

/**
* 重置邮件列表
*/
public void initMailList(){
   this.mailList = null;
}


/**
* 主函数 测试使用 包括所有的参数,可以命令行测试
*/
// public void man();

}
package com.wzh.mail.base;

import java.util.List;

public abstract class IMailDaoImpl implements IMailDao {

public static boolean ifEnd = true;//判定邮件发送任务是否已经结束
//发送服务器参数目前固定,等邮件发送功能完成后做设置功能,参数值最好能写入properties文件中
public static String smtpHost = null;//smtp发送服务器的地址
public static String smtpUserName = null;//smtp发送邮箱的用户名
public static String smtpUserPass = null;//smtp发送邮箱的用户密码
public static String smtpFrom = null;//smtp发送邮箱名
public static Long sendSplitTime = null;//发送时间间隔(为防止发送邮箱被当成垃圾邮箱)
public String mailTo;//需要发送的邮箱
public String mailTitle = null;//邮件标题
public String mailContent = null;//邮件内容
public String mailToUserName = null;//需要发送的用户称呼
public List mailList = null;//需要发送的邮箱list (考虑下list中存放MailSendParams对象,可能每个邮箱对应的称呼都不一样)
public void AddMailList(MailSendParams params) {
   // TODO Auto-generated method stub

}
//新添加
public List SendMailFromExcelFile2(String InFileName,String OutFileName){
   return null;
}
//新添加
public boolean SendMail(String email){
   return false;
}

public void InitMailServerCfg(MailSendParams params) {
   // TODO Auto-generated method stub

}

public void SendMailByParams(MailSendParams mailParams, String[] params) {
   // TODO Auto-generated method stub

}

public void SendMailFromExcelFile(String InFileName, String OutFileName) {
   // TODO Auto-generated method stub

}

public void SendMailFromTxtFile(String InFileName, String OutFileName) {
   // TODO Auto-generated method stub

}

public void SendMails() {
   // TODO Auto-generated method stub

}

public void SetMailInfo(MailSendParams params) {
   // TODO Auto-generated method stub

}

public void SetMailList(List mailList) {
   // TODO Auto-generated method stub

}

public void initMailList() {
   // TODO Auto-generated method stub

}

}

package com.wzh.mail.base;

import java.util.List;

public interface IMailDao {

/**
* 初始化邮件发送设置 参数见MailSendParams
*/
public void InitMailServerCfg(MailSendParams params);

/**
* 设置默认要发送邮件的信息 邮件标题 邮件内容 需要发送的用户称呼等
*/
public void SetMailInfo(MailSendParams params);

/**
* 从文件读出邮件list InFileName邮件list的输入文件, 格式txt
* OutFileName 邮件发送输出文件,记录发送文件的情况 格式 txt
* @param InFileName
* @param OutFileName
*/
public void SendMailFromTxtFile(String InFileName,String OutFileName);

/**
* 从文件读出邮件list InFileName邮件list的输入文件, 格式excel
* OutFileName 邮件发送输出文件,记录发送文件的情况 格式 txt
* @param InFileName
* @param OutFileName
*/
public void SendMailFromExcelFile(String InFileName,String OutFileName);

/**
* 按指定的邮件标题,内容发送邮件,可以提供指定个数的参数使用,
* 在邮件内容中使用特殊字符串代表间隔位,在此拼装邮件内容。
* @param mailParams
* @param params
*/
public void SendMailByParams(MailSendParams mailParams,String[] params);

/**
* 别的模块调用传入list参数
* @param mailList
*/
public void SetMailList(List mailList);

/**
* 从本地list发送邮件
*/
public void SendMails();

/**
* 将一个邮件信息添加到发送list
* @param params
*/
public void AddMailList(MailSendParams params);

/**
* 重置邮件列表
*/
public void initMailList();

public boolean SendMail(String email);

public List SendMailFromExcelFile2(String InFileName,String OutFileName);
/**
* 主函数 测试使用 包括所有的参数,可以命令行测试
*/
// public void man();
}
package com.wzh.mail.base;

public class MailSendParams {

private String mailTitle;//邮件标题
private String mailContent;//邮件内容
private String mailTo;//需要发送的邮箱
private String mailToUserName;//需要发送的用户称呼
public String getMailTitle() {
   return mailTitle;
}
public void setMailTitle(String mailTitle) {
   this.mailTitle = mailTitle;
}
public String getMailContent() {
   return mailContent;
}
public void setMailContent(String mailContent) {
   this.mailContent = mailContent;
}
public String getMailTo() {
   return mailTo;
}
public void setMailTo(String mailTo) {
   this.mailTo = mailTo;
}
public String getMailToUserName() {
   return mailToUserName;
}
public void setMailToUserName(String mailToUserName) {
   this.mailToUserName = mailToUserName;
}
}

 

转自http://hi.baidu.com/wmqxyh/blog/item/ce638bb3a251e35e0823026f.html

分享到:
评论

相关推荐

    百度推送源码(Android客户端+java服务器端)

    百度推送服务是一款高效、稳定、智能的移动消息推送平台,它为开发者提供了在Android客户端和Java服务器端实现消息推送的能力。这个服务旨在帮助开发者提升用户活跃度,增强用户粘性,同时也降低了开发者的开发成本...

    向企业微信中的指定用户推送消息

    对于批量推送或者群发消息,企业微信提供了不同的API接口,例如“按部门群发”或“按标签群发”,需要根据实际需求选择合适的接口并按照指定格式提供参数。 在开发过程中,需要注意以下几点: 1. **错误处理**:...

    smslib-v3.5.2

    SMSLib是一个强大的开源库,专为Java和.NET平台设计,用于与GSM模块进行交互,实现短信的发送和接收功能。这个库使得开发者能够轻松地集成短信服务到他们的应用程序中,而无需深入理解复杂的通信协议。最新版本...

    EMPP.2.0.0_API

    API会提供方法来创建、编辑和发送消息,包括单发、群发和定时发送等。 3. 消息接收:除了发送,API还可能支持接收来自用户的回复或系统的通知,这通常涉及到监听和解析特定的事件或消息。 4. 用户管理:可能包含对...

    邦仁桶装水软件(送水管理系统)

    定会感觉很惊喜,同时,与该客户的相关业务记录、财务信息、服务反馈及来电记录也同时显示出来,相 信软件必定会大大地帮您提高工作效率, 客户的满意度也会大大的提高。 软件特点 来电弹出客户,通话自动录音,...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 远程下载桌面背景图案——URLConnection与setWallpaper()搭配 8.11 将手机文件上传至网站服务器——模拟HTTPFORM的POSTACTION 8.12 移动...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定...

    短信开源App.zip

    4. **功能实现**:一个优秀的短信应用应具备基本的短信收发、联系人管理、彩信支持、拦截过滤等功能,还可能包括自定义快捷短语、群发消息、定时发送等高级特性。 5. **数据库管理**:为了存储和检索短信,项目可能...

    Google Android SDK开发范例大全的目录

    6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定...

    Google+Android+SDK开发范例大全

    SEND 6.8 存储卡剩余多少容量——Environment加StatFs 6.9 访问本机内存与存储卡——File的创建与删除 6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——...

    Google Android sdk 开发范例大全 部分章节代码

    6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定...

    Google Android SDK 开发范例大全01

    6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定...

    Google Android SDK 开发范例大全02

    6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定...

    Google Android SDK开发范例大全(完整版)

    6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定...

Global site tag (gtag.js) - Google Analytics