进入一个APP时对手机网络判断(使用广播和不使用广播)

由于大部分的软件都需要网络所以当打开软件时判断当前是否有网络并且进行相关的网络设置都是非常重要而常见的。
实现效果当没有网络时提醒用户是否去网络设置:
权限:需要在清单文件里面配置

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

代码:

package com.example.administrator.wangluotiaozhaun;

import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
//        实现效果,打开软件,当没有网络时弹出对话框跳转到切换网络界面
//    以下的这个判断可以使用户在失去网络链接的情况下,自动跳转到设置无线网界面。
        boolean b = checkNet();
        if (!b) {
//            使用对话框判断是否可以操作
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage("是否去设置网络");
            builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
//                    使用隐士跳转自动跳转到设置网络界面
                    Toast.makeText(MainActivity.this, "设置网络!", Toast.LENGTH_LONG).show();
                    Intent intent = new Intent("android.settings.WIRELESS_SETTINGS");
                    startActivity(intent);
                    return;
                }
            });
            builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(MainActivity.this, "查看本地", Toast.LENGTH_LONG).show();
                }
            });
            builder.create();
            builder.show();
        }else {
            Toast.makeText(this, "网络正处于连接中", Toast.LENGTH_LONG).show();
        }
    }
//    判断当前的网络状态如果有网的话就返回true如果没有网的话就返回false
    private boolean checkNet() {
        ConnectivityManager conn = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo net = conn.getActiveNetworkInfo();
        if (net != null && net.isConnected()) {
            return true;
        }
        return false;
    }



}

其实这种实现效果也也比较简单使用。
使用广播对当前网络的实时监控
很多应用在使用时如果网络发生改变都会有提示,下面通过动态注册来实现对网络的监控

package com.bawei.ggggs;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends Activity {
private IntentFilter filter;
private NetworkChange change;

//类似网络监听的功能
//  动态注册
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        filter = new IntentFilter();
        filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
       change = new NetworkChange();
       registerReceiver(change, filter);
    }
//    定义一个内部类继承广播
    class NetworkChange extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        // 连接判断
//      Toast.makeText(context, "网络连接",1).show();
    ConnectivityManager manager=(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo info = manager.getActiveNetworkInfo();
    if (info!=null&&info.isConnected()) {
        Toast.makeText(context, "网络连接成功",1).show();
    }else {

//      当网络连接 成功时弹出对话框来判断是否跳转到设置网络界面
        Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setMessage("是否设置网络");
        builder.setPositiveButton("是", new OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // 跳转到设置网络界面
                   Toast.makeText(MainActivity.this, "设置网络!", Toast.LENGTH_LONG).show();
                   Intent intent = new Intent("android.settings.WIRELESS_SETTINGS");
                   startActivity(intent);
                   return;
            }
        });
        builder.setNegativeButton("取消",new OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                Toast.makeText(MainActivity.this, "网络连接失败",1).show();
            }
        });
        builder.create();
        builder.show();
    }   
    }

    }



}

其实使用广播也比较简单实用它不同于上面那种,它是在使用当前APP时网络发生变化时就会弹出一个是否切换网络的对话框而第一种方法就是每次打开APP时他会走oncreate里面的方法来检测当前是否有网络并且给具体的操作提示。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,根据您的要求,我可以为您提供一个大致的实现思路: 1. 创建一个视频播放的Activity,并在其中初始化视频播放控件。 2. 注册网络状态变化的广播接收器,监听网络状态的变化。 3. 当网络状态变化判断当前网络状态是否为移动蜂窝网络状态,如果是,则暂停视频播放,并弹出提示对话框。 4. 在对话框中添加两个按钮,一个是关闭App的按钮,一个是继续播放的按钮。 5. 如果用户点击了关闭App的按钮,则调用finish()方法关闭当前Activity,退出App。 6. 如果用户点击了继续播放的按钮,则关闭对话框,继续播放视频。 以下是一个大致的代码实现,供您参考: ```java public class VideoPlayerActivity extends AppCompatActivity { private VideoView mVideoView; private AlertDialog mAlertDialog; // 注册网络状态变化的广播接收器 private BroadcastReceiver mNetworkReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if (networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) { // 当前网络状态为移动蜂窝网络状态,暂停视频播放并弹出提示对话框 mVideoView.pause(); showAlertDialog(); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_video_player); mVideoView = findViewById(R.id.video_view); // 初始化视频播放控件,设置视频播放路径等 // ... // 注册网络状态变化的广播接收器 IntentFilter filter = new IntentFilter(); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(mNetworkReceiver, filter); } @Override protected void onDestroy() { super.onDestroy(); // 取消注册网络状态变化的广播接收器 unregisterReceiver(mNetworkReceiver); } // 显示提示对话框 private void showAlertDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("提示"); builder.setMessage("当前为移动蜂窝网络,是否继续播放?"); builder.setPositiveButton("继续播放", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 点击了继续播放的按钮,关闭对话框,继续播放视频 dialog.dismiss(); } }); builder.setNegativeButton("关闭App", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 点击了关闭App的按钮,调用finish()方法关闭当前Activity,退出App finish(); } }); mAlertDialog = builder.create(); mAlertDialog.show(); } } ``` 希望能对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值