`

使用BroadcastReceiver实现QQ没网时提示以及点击跳入WIFI设置界面

 
阅读更多
首先看一下xml文件,唯一的:
<?xml version="1.0" encoding="utf-8"?><linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/bbg"><include android:id="@+id/title" android:layout_width="match_parent" android:layout_height="wrap_content" layout="@layout/titlelayout"></include><!-- android:visibility="gone"是让TextView隐藏--><textview android:id="@+id/IntentInfo" android:layout_width="fill_parent" android:layout_height="30dp" android:visibility="gone" android:gravity="center_vertical|right" android:textcolor="#BC2121" android:background="#FFF18B" android:text="网络连接不可用,请检查网络设置      >>"></textview><textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="主题:" android:id="@+id/TextView02"></textview><edittext android:id="@+id/et_subject" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="WMF意见反馈" android:enabled="false" android:background="#00000000"></edittext><textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="内容" android:id="@+id/TextView03"></textview><edittext android:id="@+id/et_content" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="请在此输入您要反馈的内容" android:singleline="false" android:textappearance="?android:attr/textAppearanceLargeInverse" android:background="@null" android:gravity="top" android:layout_weight="1"></edittext><button android:id="@+id/btn_send" android:text="发送" android:layout_width="fill_parent" android:layout_height="wrap_content"></button>
</linearlayout>

唯一的activity中代码:
package com.shzz.mail;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpResponseFactory;
import org.apache.http.util.EncodingUtils;

import com.shzz.wms.R;
import com.shzz.wms.action.TGoods.SelTGoodsActivity;
import com.shzz.wms.service.ActivityUtils;
import com.shzz.wms.service.ExitSys;
import com.sun.mail.iap.ResponseInputStream;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.NetworkInfo.State;
import android.os.Bundle;
import android.provider.Settings;
import android.text.BoringLayout;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class SendMailActivity extends Activity {
private Button send;
private EditText subject;
private EditText body;
private TextView internetInfo;
private brodCastInternet  internetStatesFilter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
ActivityUtils.addActivity(this);
setContentView(R.layout.gmail);
send = (Button) findViewById(R.id.btn_send);
subject = (EditText) findViewById(R.id.et_subject);
body = (EditText) findViewById(R.id.et_content);
internetInfo = (TextView) findViewById(R.id.IntentInfo);
//注册网络监听  ,实时监测网络状态
IntentFilter filter = new IntentFilter();  
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); 
internetStatesFilter = new brodCastInternet();
internetInfo.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startActivity(new Intent(Settings.ACTION_SETTINGS));
}
});
//注册接收者
registerReceiver(internetStatesFilter, filter); 
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
MailSenderInfo mailInfo = new MailSenderInfo();
mailInfo.setMailServerHost("smtp.163.com");
mailInfo.setMailServerPort("25");
mailInfo.setValidate(true);
mailInfo.setUserName("wmfffffolution@163.com"); // 你的邮箱地址
mailInfo.setPassword("123456");// 您的邮箱密码
mailInfo.setFromAddress("wmhhhsolution@163.com"); // 发送的邮箱
mailInfo.setToAddress("zhengchenggong@hhh.cn"); // 发到哪个邮件去
mailInfo.setSubject("WMF意见反馈"); // 邮件主题
mailInfo.setContent(body.getText().toString()); // 邮件文本
// 这个类主要来发送邮件
SimpleMailSender sms = new SimpleMailSender();
if(!"".equals(body.getText().toString().trim())){
boolean flag = sms.sendTextMail(mailInfo);// 发送文体格式
if(flag == true){
Toast.makeText(SendMailActivity.this, "邮件发送成功", Toast.LENGTH_SHORT).show();
body.setText("");
}else{
Toast.makeText(SendMailActivity.this, "邮件发送失败", Toast.LENGTH_SHORT).show();
}
}else{
Toast.makeText(SendMailActivity.this, "请填写反馈内容", Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
}
}
});
//退出
ImageView btnExit = (ImageView) findViewById(R.id.exit);
btnExit.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
ExitSys.exitSys(SendMailActivity.this, v);
}
});
}
@Override
protected void onDestroy() {
//取消网络监听
unregisterReceiver(internetStatesFilter);
super.onDestroy();
}
class brodCastInternet extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
boolean success = false; 
//获得网络连接服务 
ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); 
State state = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
if (State.CONNECTED == state) { // 判断是否正在使用WIFI网络 
internetInfo.setVisibility(View.GONE);
send.setEnabled(true);
success = true; 
}else{
internetInfo.setVisibility(View.VISIBLE);
send.setEnabled(false);
return;
}  
}
}
}
分享到:
评论

相关推荐

    BroadcastReceiver通过接口回调更新界面

    在标题"BroadcastReceiver通过接口回调更新界面"中,我们关注的核心是BroadcastReceiver如何在不直接耦合到Activity的情况下,通过接口回调的方式来更新用户界面。 首先,BroadcastReceiver的常规用法是在Activity...

    Android移动开发检测网络状态并使用BroadcastReceiver(广播接收者)进行接收网络变化的后续处理

    在Android移动应用开发中,了解如何检测网络状态以及利用BroadcastReceiver来监听网络变化是至关重要的。BroadcastReceiver是一种组件,它可以监听系统或应用广播事件,并在接收到特定广播时执行相应的操作。以下是...

    BroadcastReceiver使用demo

    在这个"BroadcastReceiver使用demo"中,我们将深入探讨BroadcastReceiver的工作原理、如何创建与注册、以及如何发送和接收广播。以下是对BroadcastReceiver的详细说明: 一、BroadcastReceiver概述 ...

    使用BroadcastReceiver和接口回调实时监控(监测)网络状态Demo

    在Android开发中,实时监控设备的网络状态是常见的需求,比如检查网络是否连接、网络类型(WiFi、4G、3G等)以及网络是否可用。本教程将通过使用`BroadcastReceiver`和接口回调的方式,详细讲解如何实现这一功能。...

    BroadcastReceiver监听网络状态(2)

    在Android开发中,`BroadcastReceiver` 是一个至关重要的组件,它允许我们监听并响应系统广播事件,例如设备的网络状态变化。在这个特定的场景中,我们关注的是如何在Fragment中利用`BroadcastReceiver`来监听网络...

    android demo,BroadcastReceiver源代码的实现。

    这个示例可能会演示如何定义BroadcastReceiver,设置IntentFilter,以及在接收到广播时如何处理。你可以通过查看这个文件来学习如何编写和使用BroadcastReceiver。 此外,为了提高BroadcastReceiver的效率和灵活性...

    BroadcastReceiver

    在使用BroadcastReceiver时,需要注意权限管理,一些系统级别的广播可能需要在AndroidManifest.xml中声明相应的权限才能接收到。例如,如果要监听网络状态变化,需要添加`ACCESS_NETWORK_STATE`权限。 另外,从...

    BroadcastReceiver与Service的例子

    在这个例子中,我们将深入探讨这两个组件的使用,以及如何将它们结合在一起实现特定的功能。 首先,`BroadcastReceiver`是Android系统中的一个关键组件,它用于监听系统或应用广播事件。当特定的广播事件发生时,如...

    Android制作QQ聊天界面

    这可能涉及到广播接收器(BroadcastReceiver)来监听新消息通知,或者使用`Socket`编程实现客户端之间的实时通信。同时,聊天记录的展示可能会使用`Adapter`与`RecyclerView`配合,动态加载并更新聊天列表。 通讯录...

    broadcastReceiver

    不同于Activity等具有用户界面的组件,`BroadcastReceiver`主要负责监听并响应特定事件。这些事件可以来源于系统或第三方应用,并且可以通过自定义广播来进行更复杂的功能实现。 #### 生命周期 `BroadcastReceiver...

    uni-app调用Android原生可以实现通信及打开WiFi

    【uni-app调用Android原生实现通信及打开WiFi】\n\nuni-app是一个跨平台的前端框架,允许开发者使用一套代码编写应用,同时在iOS、Android、H5等多个平台上运行。在uni-app中,通过调用原生插件,我们可以实现与...

    ANDROID---当网络发生变化时使用BroadcastReceiver和service通知

    ANDROID---当网络发生变化时使用BroadcastReceiver和service通知 博客地址:http://blog.csdn.net/zhang58246500/article/details/51536350

    BroadCastReceiver

    在实际开发中,`BroadcastReceiver`常常与其他组件如`Service`、`Activity`结合使用,以实现更复杂的业务逻辑。例如,当接收到开机广播时启动一个服务,或者在接收到特定广播时更新UI。 为了优化性能和用户体验,应...

    android Wifi设置

    在Android平台上,开发一款应用程序以实现“Android WiFi设置”涉及到多个关键知识点,这些知识点涵盖了Android系统的网络API、UI设计以及用户交互。以下是对这些技术点的详细解释: 1. **Android SDK与API级别**:...

    判断网络是否可用,跳转到设置界面

    "判断网络是否可用,跳转到设置界面"这个主题涉及到的是应用程序如何检测当前设备的网络状态,并根据该状态采取相应的操作,例如当网络不可用时,引导用户进入网络设置界面进行网络配置。以下是关于这一主题的详细...

    android BroadcastReceiver相关测试代码

    - 应用程序可以发送自定义广播,使用Intent的setAction()方法设置自定义的action,然后使用sendBroadcast()方法发送。 5. **权限管理**: - 对于某些敏感的系统广播,如短信或电话相关的,需要在AndroidManifest....

    BroadcastReceiverDemo

    在BroadcastReceiverDemo中,开发者可能定义了一个自定义接口,接口中包含一些方法,如onBatteryLevelChanged(int level),当BroadcastReceiver接收到电池电量改变的广播时,它会通过实现该接口的Activity或Fragment...

    BroadcastReceiver学习(01)

    在这个"BroadcastReceiver学习(01)"中,我们将深入探讨BroadcastReceiver的基本概念、注册方式以及如何创建和使用。 ### 一、BroadcastReceiver基本概念 BroadcastReceiver是一种服务组件,它能够接收并响应系统...

    Android实现定时任务及闹钟

    android中定时有很多种是实现,常见的Handler 与Thread的结合,handler.postDelayed ,以及要使用的AlarmManger 等都可以实现定时任务的执行,但是使用场景却大不相同,这里主要是怎么用AlarmManager实现定时任务。...

Global site tag (gtag.js) - Google Analytics