判断网络状态,设立后自动进行其它操作
判断网络状态,设置后自动进行其它操作
大家好,请教一个问题:
我现在想写一个共通类,实现判断网络状态的方法:当网咯未连接时,提示用户设置网络,设置成功后,自动进行登录或者其它查询操作。
目前代码的框架是这样的:
一.NetCheckReceiver.java(接受广播)
public class NetCheckReceiver extends BroadcastReceiver{
//android 中网络变化时所发的Intent的名字
public static final String netACTION = "android.net.conn.CONNECTIVITY_CHANGE";
@Override
public void onReceive(Context context, Intent intent){
LoginSplashActivity loginsplashact=new LoginSplashActivity();
if(intent.getAction().equals(netACTION)){
//Intent中ConnectivityManager.EXTRA_NO_CONNECTIVITY这个关键字表示着当前是否连接上了网络
//true 代表网络断开 false 代表网络没有断开
boolean isBreak = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
// loginsplashact.startAuthThead(!isBreak);
}
}
}
二. NetWorkStatus.java(判断网络状态并提示设置网络)
public static boolean NetWorkStatus(final Activity context) {
boolean netSataus = false;
ConnectivityManager cwjManager = (ConnectivityManager) context
.getSystemService
(Context.CONNECTIVITY_SERVICE);
cwjManager.getActiveNetworkInfo();
if (cwjManager.getActiveNetworkInfo() != null) {
netSataus = cwjManager.getActiveNetworkInfo().isAvailable();
}
// 网络未连接情况,弹出设置网络对话框
if (netSataus == false) {
receiver = new NetStateReceiver();
IntentFilter filter = new IntentFilter();
// 为 BroadcastReceiver 指定 action ,使之用于接收同 action 的广播
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
context.registerReceiver(receiver, filter);
android.app.AlertDialog.Builder b = new AlertDialog.Builder(context)
.setTitle("没有可用的网络").setMessage("是否对网络进行设置?");
b.setPositiveButton("设置网络", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
Intent mIntent = new Intent();
ComponentName comp = new ComponentName(
"com.android.settings",
"com.android.settings.WirelessSettings");
mIntent.setComponent(comp);
mIntent.setAction("android.intent.action.VIEW");
context.startActivityForResult(mIntent, 0);
}
});
b.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
b.show();
}
return netSataus;
}
三.Login.java
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.login_splash);
tipTextView=(TextView) this.findViewById(R.id.text_tip);
isConnNetwork = NetWorkStatus.NetWorkStatus(LoginSplashActivity.this);
if(isConnNetwork)
{
startAuthThead();
}
}
现在,已经实现了判断网络状态及提示设置网络功能,但是设置成功后不能自动继续向下进行。
请问怎样才能实现设置成功后不能自动继续向下进行?要修改NetCheckReceiver.java还是在Login.java中添加?
注:NetCheckReceiver.java和NetWorkStatus.java饿要做成共通类,其它需要判断网络状态的地方直接调用这两个类。
以上问题,希望大家帮忙,不胜感激。
------解决方案--------------------
建议直接在源码launcher中加入对已预置的需要网络的应用启动包名, 使用网络的业务流量收费提示,增加定制分离! 同时在Settings中增加一个关闭网络业务流量收费提示的接口。 让客户手动关闭后,不提示!
(对于已预置有提示的,直接在launcher中不管)
对于客户自己下载的使用网络的业务流量apk我们是不需要管的,也管不鸟。
大家好,请教一个问题:
我现在想写一个共通类,实现判断网络状态的方法:当网咯未连接时,提示用户设置网络,设置成功后,自动进行登录或者其它查询操作。
目前代码的框架是这样的:
一.NetCheckReceiver.java(接受广播)
public class NetCheckReceiver extends BroadcastReceiver{
//android 中网络变化时所发的Intent的名字
public static final String netACTION = "android.net.conn.CONNECTIVITY_CHANGE";
@Override
public void onReceive(Context context, Intent intent){
LoginSplashActivity loginsplashact=new LoginSplashActivity();
if(intent.getAction().equals(netACTION)){
//Intent中ConnectivityManager.EXTRA_NO_CONNECTIVITY这个关键字表示着当前是否连接上了网络
//true 代表网络断开 false 代表网络没有断开
boolean isBreak = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
// loginsplashact.startAuthThead(!isBreak);
}
}
}
二. NetWorkStatus.java(判断网络状态并提示设置网络)
public static boolean NetWorkStatus(final Activity context) {
boolean netSataus = false;
ConnectivityManager cwjManager = (ConnectivityManager) context
.getSystemService
(Context.CONNECTIVITY_SERVICE);
cwjManager.getActiveNetworkInfo();
if (cwjManager.getActiveNetworkInfo() != null) {
netSataus = cwjManager.getActiveNetworkInfo().isAvailable();
}
// 网络未连接情况,弹出设置网络对话框
if (netSataus == false) {
receiver = new NetStateReceiver();
IntentFilter filter = new IntentFilter();
// 为 BroadcastReceiver 指定 action ,使之用于接收同 action 的广播
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
context.registerReceiver(receiver, filter);
android.app.AlertDialog.Builder b = new AlertDialog.Builder(context)
.setTitle("没有可用的网络").setMessage("是否对网络进行设置?");
b.setPositiveButton("设置网络", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
Intent mIntent = new Intent();
ComponentName comp = new ComponentName(
"com.android.settings",
"com.android.settings.WirelessSettings");
mIntent.setComponent(comp);
mIntent.setAction("android.intent.action.VIEW");
context.startActivityForResult(mIntent, 0);
}
});
b.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
b.show();
}
return netSataus;
}
三.Login.java
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.login_splash);
tipTextView=(TextView) this.findViewById(R.id.text_tip);
isConnNetwork = NetWorkStatus.NetWorkStatus(LoginSplashActivity.this);
if(isConnNetwork)
{
startAuthThead();
}
}
现在,已经实现了判断网络状态及提示设置网络功能,但是设置成功后不能自动继续向下进行。
请问怎样才能实现设置成功后不能自动继续向下进行?要修改NetCheckReceiver.java还是在Login.java中添加?
注:NetCheckReceiver.java和NetWorkStatus.java饿要做成共通类,其它需要判断网络状态的地方直接调用这两个类。
以上问题,希望大家帮忙,不胜感激。
------解决方案--------------------
建议直接在源码launcher中加入对已预置的需要网络的应用启动包名, 使用网络的业务流量收费提示,增加定制分离! 同时在Settings中增加一个关闭网络业务流量收费提示的接口。 让客户手动关闭后,不提示!
(对于已预置有提示的,直接在launcher中不管)
对于客户自己下载的使用网络的业务流量apk我们是不需要管的,也管不鸟。