gpt4 book ai didi

android - 如何等到用户启用移动数据并发送邮件?

转载 作者:行者123 更新时间:2023-11-29 00:07:15 24 4
gpt4 key购买 nike

我有一个任务,我必须每天发送一次电子邮件。我使用由 AlarmManager 触发的 Service 来实现这一点。它工作正常。但问题是只有在移动数据可用时才会发送邮件。所以我尝试打开数据连接并发送邮件。移动数据已启用,但邮件未发送。我已经在这里发布了我尝试过的内容。有人请建议一种等待用户打开移动数据并发送邮件的方法。谢谢。

cm=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
ni=cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
isConnected=ni!=null&&ni.isConnected();

Mail m=new Mail("xxxxxxxxx@gmail.com","xxxxxxx");
String[] strTo={"xxxxxxxxx@gmail.com"};
m.setTo(strTo);
m.setFrom("xxxxxxxxxx@gmail.com");
m.setSubject("Subject");
m.setBody("Please find the attachment");

try{
m.addAttachment(Environment.getExternalStorageDirectory() + "/xxxxx/xxxxxx.xx");
if (isConnected){
m.send();
}else {
ConnectivityManager dataManager;
dataManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
Method dataMtd = null;
try {
dataMtd = ConnectivityManager.class.getDeclaredMethod("setMobileDataEnabled", boolean.class);
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
dataMtd.setAccessible(true);
try {
dataMtd.invoke(dataManager, true);
} catch (IllegalArgumentException | IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
NetworkInfo netInfo=dataManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
boolean isOnline=netInfo!=null&&netInfo.isConnected();
if(isOnline){
if (m.send()){
ConnectivityManager dataManager1;
dataManager1 = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
Method dataMtd1 = null;
try {
dataMtd1 = ConnectivityManager.class.getDeclaredMethod("setMobileDataEnabled", boolean.class);
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
dataMtd1.setAccessible(false);
try {
dataMtd1.invoke(dataManager1, false);
} catch (IllegalArgumentException | IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
}
}
}
}catch (final Exception e){
e.printStackTrace();
Log.v("My_Service",e.toString());
}

最佳答案

您需要让 BroadcastReceiver 监听数据连接的变化。请参阅 - http://developer.android.com/reference/android/content/BroadcastReceiver.html

检查此以获取特定于网络连接的引用 - Check INTENT internet connection

关于android - 如何等到用户启用移动数据并发送邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32945917/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com