使用两种方式,Android 发送文件到指定邮箱(带多个附件)

您所在的位置:网站首页 电脑qq邮箱怎样添加附件发送 使用两种方式,Android 发送文件到指定邮箱(带多个附件)

使用两种方式,Android 发送文件到指定邮箱(带多个附件)

2023-08-15 19:20| 来源: 网络整理| 查看: 265

第一种方法,调用系统的邮件软件来发送

众所周知在Android中调用其他程序进行相关处理,都是使用的Intent。当然,Email也不例外。

 在Android中,调用Email有三种类型的Intent:

 Intent.ACTION_SENDTO  无附件的发送

 Intent.ACTION_SEND  带附件的发送

 Intent.ACTION_SEND_MULTIPLE  带有多附件的发

 1、使用SENDTO发送

Intent data=new Intent(Intent.ACTION_SENDTO); data.setData(Uri.parse("mailto:[email protected]")); data.putExtra(Intent.EXTRA_SUBJECT, "这是标题"); data.putExtra(Intent.EXTRA_TEXT, "这是内容"); startActivity(data);

  通过向Intent中putExtra来设定邮件的相关参数。

2、使用SEND发送

Intent intent = new Intent(Intent.ACTION_SEND); String[] tos = { "[email protected]" }; String[] ccs = { "[email protected]" }; String[] bccs = {"[email protected]"}; intent.putExtra(Intent.EXTRA_EMAIL, tos); intent.putExtra(Intent.EXTRA_CC, ccs); intent.putExtra(Intent.EXTRA_BCC, bccs); intent.putExtra(Intent.EXTRA_TEXT, "body"); intent.putExtra(Intent.EXTRA_SUBJECT, "subject"); intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/Chrysanthemum.jpg")); intent.setType("image/*"); intent.setType("message/rfc882"); Intent.createChooser(intent, "Choose Email Client"); startActivity(intent);

很简单,发送邮件中,有收件者,抄送者,密送者。 也就是分别通过

     Intent.EXTRA_EMAIL,

     Intent.EXTRA_CC,

     Intent.EXTRA_BCC

  来进行putExtra来设定的

  而单个附件的发送,则使用Intent.EXTRA_STREAM来设置附件的地址Uri。

3、使用SEND_MULTIPLE来进行多附件的发送

Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE); String[] tos = { "[email protected]" }; String[] ccs = { "[email protected]" }; intent.putExtra(Intent.EXTRA_EMAIL, tos); intent.putExtra(Intent.EXTRA_CC, ccs); intent.putExtra(Intent.EXTRA_TEXT, "body"); intent.putExtra(Intent.EXTRA_SUBJECT, "subject"); ArrayList imageUris = new ArrayList(); imageUris.add(Uri.parse("file:///sdcard/Chrysanthemum.jpg")); imageUris.add(Uri.parse("file:///sdcard/Desert.jpg")); intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris); intent.setType("image/*"); intent.setType("message/rfc882"); Intent.createChooser(intent, "Choose Email Client"); startActivity(intent); 当邮件需要带附件时,类型要这样设置:intent.setType("application/octet-stream");此时,对于附件文件的转换如下 imageUris = new ArrayList(); Uri.fromFile(new File(文件的绝对路径1) Uri.fromFile(new File(文件的绝对路径2) Uri.fromFile(new File(文件的绝对路径3) putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris)

第二种方法,通过Java Mail的方式发送邮件,通过发送日志信息为例来解决

思路,首先判断网络是否可用,如果可用的话就发送邮件到指定的邮箱。

/** * 判断网络是否可用 * * @param activity * @return */ public boolean isNetworkAvailable(Activity activity) { Context context = activity.getApplicationContext(); // 获取手机所有连接管理对象(包括对WIFI,net等连接的管理) ConnectivityManager connectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivityManager == null) { return false; } else { // 获取NetworkInfo对象 NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo(); Log.e("TAG", networkInfo.length + ""); if (networkInfo != null && networkInfo.length > 0) { for (int i = 0; i < networkInfo.length; i++) { System.out.println(i + "===状态===" + networkInfo[i].getState()); System.out.println(i + "===类型===" + networkInfo[i].getTypeName()); // 判断当前网络状态是否为连接状态 if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED) {// 如果网络连接,再判断是WIFI连接还是移动数据 if (networkInfo[i].getTypeName().equals("WIFI")) {// 若是WIFI,则判断WiFI是否为可用外网 return checkWifiState(); } else {// 若是移动数据连接,则判断是否是4G网络 return true; } } } } } ToastUtils.showToast(this, "当前没有可用网络!", Toast.LENGTH_SHORT); return false; } 第二步,检查wifi是否为可用wifi

/** * 检查WIFI是否为可用外网 */ public boolean checkWifiState() { WifiConnectTool wifiTool = new WifiConnectTool(this); String[] data = wifiTool.getWifiStateAndIP(); if ("192.254.0.250".equals(data[1])) { ToastUtils.showToast(this, "外网连接失败,请重新选择可用外网WIFI!", Toast.LENGTH_LONG); return false; } return true; } 第三步,如果网络可用,就可以发送文件到邮箱了

if (isNetworkAvailable(this)) { // 此处是发送文件到邮箱的逻辑 // 发送文件的对话框 showDialogSendCSV(); } else { return; }

private void showDialogSendCSV() { AlertDialog.Builder adb = new AlertDialog.Builder(this); dialog = adb.create(); View view = getLayoutInflater().inflate(R.layout.setemail_dialog, null); ImageView iv_arrow = (ImageView) view.findViewById(R.id.iv_arrow); ImageView iv_add = (ImageView) view.findViewById(R.id.add_contact); final EditText email_contact = (EditText) view .findViewById(R.id.email_contact); /*final EditText email_title = (EditText) view .findViewById(R.id.email_title); final EditText email_content = (EditText) view .findViewById(R.id.email_content);*/ //下拉框,显示出保存的收件人 iv_arrow.setOnClickListener(new OnClickListener() { private PopupWindow pop; @Override public void onClick(View v) { if(popWindow == null){ pop = new PopupWindow(DataManagerActivity.this); int with = DensityUtil.dip2px(DataManagerActivity.this, 50); pop.setWidth(email_contact.getWidth()+with); // 让 弹出窗体与输入框宽度一样 int hight = DensityUtil.dip2px(DataManagerActivity.this, 130); pop.setHeight(hight); pop.setContentView(listView1); pop.setFocusable(true); // 默认 popWindow 不获得焦点,这样,listview 条目的无法点击 } listView1.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { // 将对应的文字写入输入框 email_contact.setText(msgList.get(position)); email_contact.setSelection(msgList.get(position).length()); // 关闭弹出窗体 pop.dismiss(); } }); // 切换popWidnows的显示 if(pop.isShowing()){ pop.dismiss(); }else{ pop.showAsDropDown(email_contact, 0, 0); // 弹出窗体显示在 输入框的下方 } } }); //添加收件人到下拉框 iv_add.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String msg = email_contact.getText().toString().trim(); if(!TextUtils.isEmpty(msg)){ if(!dataProvider.isExist(msg)){ //添加到集合 dataProvider.addContact(msg); msgList.add(msg); adapter2.notifyDataSetChanged(); } } } }); Button btnOk = (Button) view.findViewById(R.id.btn_ok); Button btnCancel = (Button) view.findViewById(R.id.btn_cancel); btnOk.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String contact = email_contact.getText().toString().trim(); /*String title = email_title.getText().toString().trim(); String content = email_content.getText().toString().trim();*/ // 检查邮箱格式是否正确 if (contact .matches("\\b^['_a-z0-9-\\+]" + "+(\\.['_a-z0-9-\\+]+)*@[a-z0-9-]+" + "(\\.[a-z0-9-]+)*\\.([a-z]{2}|aero|arpa|asia" + "|biz|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|" + "name|nato|net|org|pro|tel|travel|xxx)$\\b")) { } else { ToastUtils.showToast(DataManagerActivity.this, "邮箱格式不正确", Toast.LENGTH_SHORT); return; } /*if (TextUtils.isEmpty(title)) { ToastUtils.showToast(DataManagerActivity.this, "标题不能为空", Toast.LENGTH_SHORT); return; } emailTitle = title; emailContent = content;*/ emailReciver = new String[] { contact }; // 发送文件到邮箱(调用系统的软件) //sendCSVFileIntent(); // 发送文件到邮箱(使用JavaMail) new Thread(){ public void run() { sendCSVFilByJavaMail(); }; }.start(); dialog.dismiss(); } }); btnCancel.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); dialog.setCancelable(false); dialog.setView(view, 0, 0, 0, 0); // 设置 view dialog.show(); } //通过JavaMail发送文件 private void sendCSVFilByJavaMail() { sb.setLength(0); //先设置邮件 MailSendInfo info = new MailSendInfo(); info.setMailServerHost("smtp.163.com"); info.setMailServerPost("25"); info.setValidate(true); info.setUserName("[email protected]"); info.setPassWord("333333");//邮箱密码 info.setFromAddress("@163.com"); //以下三个内容是需要修改的 info.setToAddress(emailReciver[0]); if(selectSendItem.size()>1){ info.setSubject(selectSendItem.get(0)+"..."); }else{ info.setSubject(selectSendItem.get(0)); } sb.append("收到的文件:"); for (int i = 0; i < selectSendItem.size(); i++) { sb.append(selectSendItem.get(i)); if(i < (selectSendItem.size()-1)){ sb.append(", "); } } Log.e("邮件内容:", sb.toString()); info.setContent(sb.toString()); MultiMailSend senMail = new MultiMailSend(path);//这个类用来发送邮件 senMail.sendAttachment(info,selectSendItem); } import java.io.FileOutputStream; import java.util.ArrayList; import java.util.Date; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Address; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility; import com.zrd.111.model.MailSendInfo; import android.os.Environment; import android.util.Log; /** * 以下是利用JavaMail的API来创建和发送邮件 * 多附件发送邮件类,并且发送邮件给多个接受者、抄送文件 * @author Administrator * */ public class MultiMailSend { private MailSendInfo info; private String path; public MultiMailSend(String path){ this.path = path; } /** * 以文本格式发送邮件 * @param info 待发送的邮件信息 * @return */ public void sendTextMail(MailSendInfo info){ this.info = info; //判断是否需要身份验证 Properties properties = info.getProperties(); //1、根据邮件会话属性和密码验证器构造一个发送邮件的session Session sendMailSession = Session.getDefaultInstance(properties); //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态 sendMailSession.setDebug(true); try { //2、通过session得到transport对象,以便连接邮箱并发送 Transport transport = sendMailSession.getTransport(); //3、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名和密码给SMTP服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。 transport.connect("smtp.163.com", ".com", "11"); //4、创建邮件消息 Message mailMessage = createSimpleMail(sendMailSession); //5、发送邮件消息 transport.sendMessage(mailMessage, mailMessage.getAllRecipients()); transport.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 发送内容带有图片的邮件 */ public void sendImageEmail(MailSendInfo info){ this.info = info; Properties properties = info.getProperties(); //1、根据邮件会话属性和密码验证器构造一个发送邮件的session Session sendMailSession = Session.getDefaultInstance(properties); //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态 sendMailSession.setDebug(true); try { //2、通过session得到transport对象,以便连接邮箱并发送 Transport transport = sendMailSession.getTransport(); //3、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名和密码给SMTP服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。 transport.connect("smtp.163.com", "1112222222.com", "3333333"); //4、创建邮件消息 Message mailMessage = createImageMail(sendMailSession); //5、发送邮件消息 transport.sendMessage(mailMessage, mailMessage.getAllRecipients()); transport.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 发送带有附件的邮件 * @param info */ public void sendAttachment(MailSendInfo info,ArrayList list){ this.info = info; Properties properties = info.getProperties(); //1、根据邮件会话属性和密码验证器构造一个发送邮件的session Session sendMailSession = Session.getDefaultInstance(properties); //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态 sendMailSession.setDebug(true); try { //2、通过session得到transport对象,以便连接邮箱并发送 Transport transport = sendMailSession.getTransport(); //3、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名和密码给SMTP服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。 transport.connect("smtp.163.com", "@163.com", "811"); //4、创建邮件消息 Message mailMessage = createAttachmentMail(sendMailSession,list); //5、发送邮件消息 transport.sendMessage(mailMessage, mailMessage.getAllRecipients()); transport.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 发送复杂邮件 * @param info */ public void sendMixedMail(MailSendInfo info,ArrayList list){ this.info = info; Properties properties = info.getProperties(); //1、根据邮件会话属性和密码验证器构造一个发送邮件的session Session sendMailSession = Session.getDefaultInstance(properties); //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态 sendMailSession.setDebug(true); try { //2、通过session得到transport对象,以便连接邮箱并发送 Transport transport = sendMailSession.getTransport(); //3、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名和密码给SMTP服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。 transport.connect("smtp.163.com", "[email protected]", "333333"); //4、创建邮件消息 Message mailMessage = createMixedMail(sendMailSession,list); //5、发送邮件消息 transport.sendMessage(mailMessage, mailMessage.getAllRecipients()); transport.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 创建复杂的邮件(包括图片和多附件的邮件) * @param sendMailSession * @param list 是选中CSV文件的集合 * @return */ private Message createMixedMail(Session sendMailSession,ArrayList list) { // 创建邮件 MimeMessage message = null; try { message = new MimeMessage(sendMailSession); // 设置邮件的基本信息 //创建邮件发送者地址 Address from = new InternetAddress(info.getFromAddress()); //设置邮件消息的发送者 message.setFrom(from); //创建邮件的接受者地址,并设置到邮件消息中 Address to = new InternetAddress(info.getToAddress()); //设置邮件消息的接受者, Message.RecipientType.TO属性表示接收者的类型为TO message.setRecipient(Message.RecipientType.TO, to); //邮件标题 message.setSubject(info.getSubject()); // 正文 MimeBodyPart text = new MimeBodyPart(); text.setContent(info.getContent(), "text/html;charset=UTF-8"); /*// 图片 MimeBodyPart image = new MimeBodyPart(); image.setDataHandler(new DataHandler(new FileDataSource(Environment.getExternalStorageDirectory().getPath()+"/猫咪.jpg"))); image.setContentID("猫咪.jpg");*/ // 附件1 MimeBodyPart attach = new MimeBodyPart(); DataHandler dh = new DataHandler(new FileDataSource(Environment.getExternalStorageDirectory().getPath()+"/zed_authorize.txt")); attach.setDataHandler(dh); attach.setFileName(dh.getName()); // 附件2 MimeBodyPart attach2 = new MimeBodyPart(); DataHandler dh2 = new DataHandler(new FileDataSource(Environment.getExternalStorageDirectory().getPath()+"/error_log_z9.txt")); attach2.setDataHandler(dh2); attach2.setFileName(MimeUtility.encodeText(dh2.getName())); /*// 描述关系:正文和图片 MimeMultipart mp1 = new MimeMultipart(); mp1.addBodyPart(image); mp1.setSubType("related");*/ // 描述关系:正文和附件 MimeMultipart mp2 = new MimeMultipart(); mp2.addBodyPart(text); mp2.addBodyPart(attach); mp2.addBodyPart(attach2); /*// 代表正文的BodyPart MimeBodyPart content = new MimeBodyPart(); content.setContent(mp1); mp2.addBodyPart(content);*/ mp2.setSubType("mixed"); message.setContent(mp2); message.saveChanges(); // 将创建的Email写入到E盘存储 //message.writeTo(new FileOutputStream("E:\\MixedMail.eml")); } catch (Exception e) { Log.e("TAG", "创建复杂邮件失败"); e.printStackTrace(); } // 返回创建好的的邮件 return message; } /** * 创建带有附件的邮件 * @param sendMailSession * @param list 选中的CSV文件的集合 * @return */ private Message createAttachmentMail(Session sendMailSession,ArrayList list) { //创建邮件 MimeMessage message = null; try { message = new MimeMessage(sendMailSession); // 设置邮件的基本信息 //创建邮件发送者地址 Address from = new InternetAddress(info.getFromAddress()); //设置邮件消息的发送者 message.setFrom(from); //创建邮件的接受者地址,并设置到邮件消息中 Address to = new InternetAddress(info.getToAddress()); //设置邮件消息的接受者, Message.RecipientType.TO属性表示接收者的类型为TO message.setRecipient(Message.RecipientType.TO, to); //邮件标题 message.setSubject(info.getSubject()); // 创建邮件正文,为了避免邮件正文中文乱码问题,需要使用CharSet=UTF-8指明字符编码 MimeBodyPart text = new MimeBodyPart(); text.setContent(info.getContent(), "text/html;charset=UTF-8"); // 创建容器描述数据关系 MimeMultipart mp = new MimeMultipart(); mp.addBodyPart(text); for (int i = 0; i < list.size(); i++) { // 创建邮件附件 MimeBodyPart attach = new MimeBodyPart(); DataHandler dh = new DataHandler(new FileDataSource(path + list.get(i))); attach.setDataHandler(dh); attach.setFileName(MimeUtility.encodeText(dh.getName())); mp.addBodyPart(attach); } mp.setSubType("mixed"); message.setContent(mp); message.saveChanges(); // 将创建的Email写入到E盘存储 //message.writeTo(new FileOutputStream("E:\\attachMail.eml")); } catch (Exception e) { Log.e("TAG", "创建带附件的邮件失败"); e.printStackTrace(); } // 返回生成的邮件 return message; } /** *生成一封邮件正文带图片的邮件 * @param sendMailSession * @return */ private MimeMessage createImageMail(Session sendMailSession) { //创建邮件 MimeMessage mailMessage = null; try { mailMessage = new MimeMessage(sendMailSession); // 设置邮件的基本信息 //创建邮件发送者地址 Address from = new InternetAddress(info.getFromAddress()); //设置邮件消息的发送者 mailMessage.setFrom(from); //创建邮件的接受者地址,并设置到邮件消息中 Address to = new InternetAddress(info.getToAddress()); //设置邮件消息的接受者, Message.RecipientType.TO属性表示接收者的类型为TO mailMessage.setRecipient(Message.RecipientType.TO, to); //邮件标题 mailMessage.setSubject(info.getSubject()); // 准备邮件数据 // 准备邮件正文数据 MimeBodyPart text = new MimeBodyPart(); text.setContent("这是一封邮件正文带图片的邮件", "text/html;charset=UTF-8"); // 准备图片数据 MimeBodyPart image = new MimeBodyPart(); DataHandler dh = new DataHandler(new FileDataSource("src\\1.jpg")); image.setDataHandler(dh); image.setContentID("xxx.jpg"); // 描述数据关系 MimeMultipart mm = new MimeMultipart(); mm.addBodyPart(text); mm.addBodyPart(image); mm.setSubType("related"); mailMessage.setContent(mm); mailMessage.saveChanges(); //将创建好的邮件写入到E盘以文件的形式进行保存 mailMessage.writeTo(new FileOutputStream("E:\\ImageMail.eml")); //返回创建好的邮件 } catch (Exception e) { Log.e("TAG", "创建带有图片的邮件消息失败"); e.printStackTrace(); } return mailMessage; } /** * 创建纯文本内容的邮件消息 * @param sendMailSession * @return */ public MimeMessage createSimpleMail(Session sendMailSession){ MimeMessage mailMessage = null; try { //根据session创建一条邮件信息 mailMessage = new MimeMessage(sendMailSession); //创建邮件发送者地址 Address from = new InternetAddress(info.getFromAddress()); //设置邮件消息的发送者 mailMessage.setFrom(from); //创建邮件的接受者地址,并设置到邮件消息中 Address to = new InternetAddress(info.getToAddress()); //设置邮件消息的接受者, Message.RecipientType.TO属性表示接收者的类型为TO mailMessage.setRecipient(Message.RecipientType.TO, to); //设置邮件标题 mailMessage.setSubject(info.getSubject()); //设置邮件内容 mailMessage.setText(info.getContent()); //设置邮件发送的时间 mailMessage.setSentDate(new Date()); } catch (Exception e) { Log.e("TAG", "邮件消息创建失败"); e.printStackTrace(); } return mailMessage; } }

下面是发送邮件的字段信息

import java.util.Properties; /** * 邮件的设置信息 * @author Administrator * */ public class MailSendInfo { /** * 发送邮件的服务器的IP和端口 */ private String mailServerHost; private String mailServerPort; /** * 邮件发送者的地址 */ private String fromAddress; /** * 邮件接受者的地址 */ private String toAddress; /** * 登陆邮件发送服务器的用户名和密码 */ private String userName; private String passWord; /** * 是否需要身份验证 */ private boolean validate = false; /** * 邮件发送的主题 */ private String subject; /** * 邮件发送的内容 */ private String content; /** * 邮件附件的文件名 */ private String[] attachFileNames; /** * 获取邮件会话属性 * @return */ public Properties getProperties(){ Properties p = new Properties(); p.put("mail.smtp.host", this.mailServerHost); p.put("mail.smtp.port", this.mailServerPort); p.put("mail.transport.protocol", "smtp"); p.put("mail.smtp.auth", validate ? "true" : "false"); return p; } public String getMailServerHost() { return mailServerHost; } public void setMailServerHost(String mailServerHost) { this.mailServerHost = mailServerHost; } public String getMailServerPost() { return mailServerPort; } public void setMailServerPost(String mailServerPost) { this.mailServerPort = mailServerPost; } public String getFromAddress() { return fromAddress; } public void setFromAddress(String fromAddress) { this.fromAddress = fromAddress; } public String getToAddress() { return toAddress; } public void setToAddress(String toAddress) { this.toAddress = toAddress; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassWord() { return passWord; } public void setPassWord(String passWord) { this.passWord = passWord; } public boolean isValidate() { return validate; } public void setValidate(boolean validate) { this.validate = validate; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String[] getAttachFileNames() { return attachFileNames; } public void setAttachFileNames(String[] attachFileNames) { this.attachFileNames = attachFileNames; } }

显示发送邮件对话框是自定义的对话框,XML代码如下

注意,

1、在MultiMailSend类中发送普通文本和附件,我在android上调试过可以使用,但发送图片,我没调试通过,需要在web中才能发送成功,代码先贴在这里,

等以后找到了解决方法后再分享

2、需要加上联网权限

3、要读取SD卡中的文件,要加上读取SD卡的权限



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3