如何触发广播接收器,当我开启/关闭移动蜂窝数据(手机上网) [英] How to trigger BroadcastReceiver when I turn on/off Mobile Cellular Data(Mobile Internet)

查看:273
本文介绍了如何触发广播接收器,当我开启/关闭移动蜂窝数据(手机上网)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道如何触发的广播接收器如果我的开启/关闭移动蜂窝数据即可。我已经注册广播接收器和是如果我开启/关闭无线网络工作正常,但如果我打开/关闭蜂窝数据没有广播触发。任何人都可以请帮我这个?

这是我的code。

下面我注册的广播接收器 Manifest.file

 <接收机器人:名字=com.servicesandroid.NetworkCheckReceiver>
            &所述;意图滤光器>
                <作用机器人:名字=android.net.conn.CONNECTIVITY_CHANGE/>
            &所述; /意图滤光器>
        < /接收器>

清单权限

 <使用许可权的android:NAME =android.permission.ACCESS_NETWORK_STATE/>
    <使用许可权的android:NAME =android.permission.INTERNET对/>

下面是我的广播接收器类。

 公共类NetworkCheckReceiver扩展广播接收器{    @覆盖
    公共无效的onReceive(上下文的背景下,意图意图){
        // TODO自动生成方法存根
        Toast.makeText(背景下,已启动,Toast.LENGTH_SHORT).show();
         Log.d(应用程序,网络连通性的变化);
    }}


解决方案

您需要指定相应的权限和做要紧如下所述:

在清单权限:

 <使用许可权的android:NAME =android.permission.INTERNET对/>
<使用许可权的android:NAME =android.permission.ACCESS_NETWORK_STATE/>
<使用许可权的android:NAME =android.permission.ACCESS_WIFI_STATE/>

在清单的接收声明:

 <接收
        机器人:名字=。NetworkCheckReceiver
        >
        &所述;意图滤光器>
            <作用机器人:名字=android.net.conn.CONNECTIVITY_CHANGE/>
        &所述; /意图滤光器>
    < /接收器>

NetworkCheckReceiver类文件:

 公共类NetworkCheckReceiver扩展广播接收器{    @覆盖
    公共无效的onReceive(上下文的背景下,意图意图){
        如果(intent.getAction()。等于(ConnectivityManager.CONNECTIVITY_ACTION)){
            Log.d(NetworkCheckReceiver,NetworkCheckReceiver援引...);
            布尔noConnectivity = intent.getBooleanExtra(
                    ConnectivityManager.EXTRA_NO_CONNECTIVITY,FALSE);            如果(!noConnectivity){
                Log.d(NetworkCheckReceiver,连接);
            }
            其他
            {
                Log.d(NetworkCheckReceiver,断开连接);
            }
        }
    }}

注意:

请确保您有工作的移动蜂窝数据连接。如果你没有上网包,你只要开启/关闭该接收器将不会触发。你肯定的需要有工作连接以测试。

I want to know how to trigger BroadcastReceiver if I turn on/off mobile cellular data. I already registered BroadcastReceiver and it is working fine if I turn on/off wifi but if I turn on/off cellular data no broadcast trigger. can anyone please help me about this?

Here is my code.

Here I register BroadcastReceiver in Manifest.file

       <receiver android:name="com.servicesandroid.NetworkCheckReceiver" >
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
        </receiver>

Manifest permissions

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

Here is my BroadcastReceiver class.

public class NetworkCheckReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        Toast.makeText(context, "Started", Toast.LENGTH_SHORT).show();
         Log.d("app","Network connectivity change");
    }

}

解决方案

You need to specify appropriate permissions and do the needful as mentioned below:

Permissions in manifest:

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

Receiver declaration in manifest:

        <receiver
        android:name=".NetworkCheckReceiver"
        >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
    </receiver>

NetworkCheckReceiver class file:

public class NetworkCheckReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
            Log.d("NetworkCheckReceiver", "NetworkCheckReceiver invoked...");


            boolean noConnectivity = intent.getBooleanExtra(
                    ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);

            if (!noConnectivity) {
                Log.d("NetworkCheckReceiver", "connected");
            }
            else
            {
                Log.d("NetworkCheckReceiver", "disconnected");
            }
        }
    }

}

Note:

Make sure you have working mobile cellular data connection. This receiver won't trigger if you don't have internet pack and you just switching on/off. You surely need to have working connection to test.

这篇关于如何触发广播接收器,当我开启/关闭移动蜂窝数据(手机上网)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆