打开/关闭移动蜂窝数据(移动互联网)时如何触发BroadcastReceiver

Chi*_*awa 4 android

如果我打开/关闭移动蜂窝数据,我想知道如何触发BroadcastReceiver.我已经注册了BroadcastReceiver,如果我打开/关闭wifi,它工作正常但是如果我打开/关闭蜂窝数据没有广播触发器.有人可以帮我这个吗?

这是我的代码.

这里我在Manifest.file中注册BroadcastReceiver

       <receiver android:name="com.servicesandroid.NetworkCheckReceiver" >
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
        </receiver>
Run Code Online (Sandbox Code Playgroud)

清单权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET"/>
Run Code Online (Sandbox Code Playgroud)

这是我的BroadcastReceiver类.

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");
    }

}
Run Code Online (Sandbox Code Playgroud)

Meh*_*sar 7

您需要指定适当的权限并执行以下所述的必要操作:

清单中的权限:

<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"/>
Run Code Online (Sandbox Code Playgroud)

清单中的接收者声明:

        <receiver
        android:name=".NetworkCheckReceiver"
        >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
    </receiver>
Run Code Online (Sandbox Code Playgroud)

NetworkCheckReceiver类文件:

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");
            }
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

注意:

确保您有可用的移动蜂窝数据连接.如果您没有互联网包并且只是打开/关闭,则此接收器不会触发.你肯定需要有工作连接来测试.