网络状态的判断,以加载网络图片为例
2017-12-30 12:12
357 查看
网络状态判断的工具类:
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.v7.app.AlertDialog;
/**
* Created by jane on 2017/12/26.
*/
public class NetUtils {
//判断有无网络的方法
public static boolean isConn(Context context){
//1.得到系统服务
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//2.得到网络信息类对象-需要添加权限
清单文件配置:<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
NetworkInfo info = manager.getActiveNetworkInfo();
//3.进行判断
if(info!=null && info.isAvailable()){//已经连接网络
return true;
}else{
return false;
}
}
//如果没有网络的情况下,弹出一个对话框,打开设置页面
public static void openNetDialog(final Context context){
AlertDialog.Builder builder=new AlertDialog.Builder(context);
builder.setTitle("提示");
builder.setMessage("没有网络,是否进行设置?");
builder.setPositiveButton("设置", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//跳转到系统设置页面-隐士跳转
Intent intent = null;
// 先判断当前系统版本
if(android.os.Build.VERSION.SDK_INT > 10){ // 3.0以上
intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);
}else{
intent = new Intent();
intent.setClassName("com.android.settings", "com.android.settings.WirelessSettings");
}
context.startActivity(intent);
}
});
builder.setNegativeButton("取消",null);
AlertDialog dialog = builder.create();
dialog.show();
}
}
Activity的代码:
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class MainActivity extends AppCompatActivity {
private Button button;
private ImageView img;
private Handler mHandler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
//显示图片
Bitmap bitmap=(Bitmap) msg.obj;
img.setImageBitmap(bitmap);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//ctrl+alt+f:设置成员变量
button = findViewById(R.id.btndown);
img = findViewById(R.id.img);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//进行网络判断
boolean conn = NetUtils.isConn(MainActivity.this);
if(conn){
//1.进行网络请求,属于耗时任务。。。。开启一个子线程
new Thread(){
@Override
public void run() {
//使用java.net包下的httpurlconnention
reqestNetData();
}
}.start();
}else{
//打开对话框
NetUtils.openNetDialog(MainActivity.this);
}
}
});
}
private void reqestNetData() {
//1.创建一个Url对象 ctrl+alt+t
try {
URL url=new URL("https://ss0.baidu.com/94o3dSag_xI4khGko9WTAnF6hhy/image/h%3D220/sign=7c8bf780a9cc7cd9e52d33db09012104/838ba61ea8d3fd1f91104e573a4e251f95ca5f46.jpg");
//2. 打开连接 alt+enter自动补全 HttpURLConnection 继承自 URLConnection
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
//3.进行设置
urlConnection.setRequestMethod("GET");//设置请求方式
urlConnection.setConnectTimeout(5000);//连接超时时间
urlConnection.setReadTimeout(5000);//读取超时时间
//4.判断响应码
int responseCode = urlConnection.getResponseCode();
if(responseCode==200){//正常
//5.获取数据
InputStream inputStream = urlConnection.getInputStream();
//将流转换成二进制图片对象
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
//显示图片
//img.setImageBitmap(bitmap);
Message msg=Message.obtain();
msg.obj=bitmap;
mHandler.sendMessage(msg);
inputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.v7.app.AlertDialog;
/**
* Created by jane on 2017/12/26.
*/
public class NetUtils {
//判断有无网络的方法
public static boolean isConn(Context context){
//1.得到系统服务
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//2.得到网络信息类对象-需要添加权限
清单文件配置:<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
NetworkInfo info = manager.getActiveNetworkInfo();
//3.进行判断
if(info!=null && info.isAvailable()){//已经连接网络
return true;
}else{
return false;
}
}
//如果没有网络的情况下,弹出一个对话框,打开设置页面
public static void openNetDialog(final Context context){
AlertDialog.Builder builder=new AlertDialog.Builder(context);
builder.setTitle("提示");
builder.setMessage("没有网络,是否进行设置?");
builder.setPositiveButton("设置", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//跳转到系统设置页面-隐士跳转
Intent intent = null;
// 先判断当前系统版本
if(android.os.Build.VERSION.SDK_INT > 10){ // 3.0以上
intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);
}else{
intent = new Intent();
intent.setClassName("com.android.settings", "com.android.settings.WirelessSettings");
}
context.startActivity(intent);
}
});
builder.setNegativeButton("取消",null);
AlertDialog dialog = builder.create();
dialog.show();
}
}
Activity的代码:
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class MainActivity extends AppCompatActivity {
private Button button;
private ImageView img;
private Handler mHandler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
//显示图片
Bitmap bitmap=(Bitmap) msg.obj;
img.setImageBitmap(bitmap);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//ctrl+alt+f:设置成员变量
button = findViewById(R.id.btndown);
img = findViewById(R.id.img);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//进行网络判断
boolean conn = NetUtils.isConn(MainActivity.this);
if(conn){
//1.进行网络请求,属于耗时任务。。。。开启一个子线程
new Thread(){
@Override
public void run() {
//使用java.net包下的httpurlconnention
reqestNetData();
}
}.start();
}else{
//打开对话框
NetUtils.openNetDialog(MainActivity.this);
}
}
});
}
private void reqestNetData() {
//1.创建一个Url对象 ctrl+alt+t
try {
URL url=new URL("https://ss0.baidu.com/94o3dSag_xI4khGko9WTAnF6hhy/image/h%3D220/sign=7c8bf780a9cc7cd9e52d33db09012104/838ba61ea8d3fd1f91104e573a4e251f95ca5f46.jpg");
//2. 打开连接 alt+enter自动补全 HttpURLConnection 继承自 URLConnection
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
//3.进行设置
urlConnection.setRequestMethod("GET");//设置请求方式
urlConnection.setConnectTimeout(5000);//连接超时时间
urlConnection.setReadTimeout(5000);//读取超时时间
//4.判断响应码
int responseCode = urlConnection.getResponseCode();
if(responseCode==200){//正常
//5.获取数据
InputStream inputStream = urlConnection.getInputStream();
//将流转换成二进制图片对象
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
//显示图片
//img.setImageBitmap(bitmap);
Message msg=Message.obtain();
msg.obj=bitmap;
mHandler.sendMessage(msg);
inputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
相关文章推荐
- 判断网络 并选择加载图片的方式
- 加载多张图片,判断加载完成状态
- ListView优化-滚动状态停止加载网络图片
- JavaScript判断远程图片是否存在,加载完成:onerror 属性- & jQuery实现(如果因为网络或图片的原因发生异常,则显示该图片)~
- 近期的安卓学习开发SOS APP的一些总结文档 (拨打电话 加载首页图片的异步代码 判断是否有网络代码)
- Glide在加载网络图片过程中怎么知道加载状态
- Xutils请求数据imageloader加载图片+网络判断
- Unity网络正常状态下优先加载网络图片,否则加载本地缓存图片
- 近期的安卓学习开发SOS APP的一些总结文档 (拨打电话 加载首页图片的异步代码 判断是否有网络代码)
- 判断网络状态、Xutils3.0图片框架·····--狸菇凉_
- 判断网络状态 fragment隐藏显示 xlistview多条目加载数据
- 网络判断+xlistview上拉加载、下拉刷新+Tablayout +图片拖拽缩放+数据库存储 3、案例完成思路要求: 模块一:用fragment+viewpager+Tablayout实现页面
- 在tableviewcell 加载图片,解决第三方SDWebImage网络不是很通畅的状态下往下拉不能加载图片
- 判断网络状态进行网络加载等操作
- 安卓:handler解析json新闻,显示图片,标题,内容(未判断网络连接状态)
- JavaScript判断远程图片是否存在,加载完成:onerror 属性- & jQuery实现(如果因为网络或图片的原因发生异常,则显示该图片)~
- IOS-SDWebImage根据网络状态加载图片
- js使用预加载判断网络状态
- Android网络加载图片只需一行代码!!!!
- Android判断网络状态是否断开