我做了一个应用程序,它将在本地Wifi(不是互联网连接)上运行,它需要通过Gmail或电子邮件应用程序发送邮件。所以我想通过3G连接来强制它。我已经做到了:
if (imageLoaded) {
ConnectivityManager cm =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni == null) {
}else{
if (ni.getType() == ConnectivityManager.TYPE_WIFI
|| ni.getType() == ConnectivityManager.TYPE_WIMAX) {
WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
if (wm != null)
System.out.println(wm.disconnect());
}
while (true) {
ni = cm.getActiveNetworkInfo();
if (ni != null && ni.getType() == ConnectivityManager.TYPE_MOBILE
&& ni.isConnected()) {
sendOnClick();
break;
}
}
}
}
发送代码为:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_EMAIL, adress);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, emailBody);
Uri fileUri = Uri.fromFile(file);
intent.putExtra(Intent.EXTRA_STREAM, fileUri);
try {
startActivity(Intent.createChooser(intent, "mail"));
}
但问题是我不知道如何在发送邮件时收到通知,以便我可以重新连接到我的本地 Wifi。关于如何实现这一目标的任何想法?
好的,你只需要使用 startActivityForResult 方法来启动你的邮件活动。
然后,当电子邮件应用程序返回到您的应用程序时,您将在活动的 onActivityResult 回调中收到警告。
请参阅: 启动活动结果
开始:
private final static int INTENT_UUID = 69;//Declare this in your class
startActivity(Intent.createChooser(intent, "mail"), INTENT_UUID);
事后接收 :
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == INTENT_UUID) {
//Do something
}
}