Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查网络连接android_Android_Service_Broadcastreceiver_Intentservice_Android Networking - Fatal编程技术网

检查网络连接android

检查网络连接android,android,service,broadcastreceiver,intentservice,android-networking,Android,Service,Broadcastreceiver,Intentservice,Android Networking,我是新使用安卓服务的,我很困惑。我有和活动,我想检查所有时间的网络连接是wifi或3g。我实现了一个简单的服务和一个BroadcastReveiver 这是服务的代码 这里是广播接收器的代码 这是清单中的用户权限 这不起作用,我也不知道为什么。不建议一直检查连接,只有在需要时才呼叫: 无线网络: 3G: 不建议始终检查连接,请仅在需要时拨打: 无线网络: 3G: 您在活动中注册的IntentFilter没有与之关联的任何类型的筛选器 由于您是使用连接操作创建意图的,因此需要使用相同的操作创建一个

我是新使用安卓服务的,我很困惑。我有和活动,我想检查所有时间的网络连接是wifi或3g。我实现了一个简单的服务和一个BroadcastReveiver

这是服务的代码

这里是广播接收器的代码

这是清单中的用户权限


这不起作用,我也不知道为什么。

不建议一直检查连接,只有在需要时才呼叫:

无线网络:

3G:


不建议始终检查连接,请仅在需要时拨打:

无线网络:

3G:

您在活动中注册的IntentFilter没有与之关联的任何类型的筛选器

由于您是使用连接操作创建意图的,因此需要使用相同的操作创建一个IntentFilter,以便触发BroadcastReceiver

例如:

LocalBroadcastManager.getInstance(this).registerReceiver(
    new NetworkReceiver(), new IntentFilter("connection"));
您在活动中注册的IntentFilter没有与之关联的任何类型的筛选器

由于您是使用连接操作创建意图的,因此需要使用相同的操作创建一个IntentFilter,以便触发BroadcastReceiver

例如:

LocalBroadcastManager.getInstance(this).registerReceiver(
    new NetworkReceiver(), new IntentFilter("connection"));

获取当前网络状态的测试似乎不正确。如果WIFI或移动数据不可用,此测试将返回false

if ( conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED
     || conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED)
如果您正在查看网络数据是否可用,请查看如何使用。您可以将测试替换为以下内容:

NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
                      activeNetwork.isConnectedOrConnecting();

获取当前网络状态的测试似乎不正确。如果WIFI或移动数据不可用,此测试将返回false

if ( conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED
     || conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED)
如果您正在查看网络数据是否可用,请查看如何使用。您可以将测试替换为以下内容:

NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
                      activeNetwork.isConnectedOrConnecting();

您是否已在下面添加广播接收器的目的过滤器

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

        </intent-filter>
    </receiver>

您是否已在下面添加广播接收器的目的过滤器

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

        </intent-filter>
    </receiver>

这不起作用意味着什么?它会崩溃吗?这不准确吗?如果不准确,你看到了什么?你期望什么?@Tanis.7x打印LN没有显示,没有碰撞这意味着什么不起作用?它会崩溃吗?这不准确吗?如果不准确,你看到了什么?你期望什么?@Tanis.7x打印的LN没有显示,没有崩溃为什么?它会消耗很多资源吗?是的,你的电池会耗尽=哦,为什么?它会消耗很多资源吗?是的,你的电池会耗尽=O@Frog:此外,在开始活动之前注册接收器。由于启动服务、分叉后台线程等方面的开销,您的代码可能大部分时间都会按照您拥有的顺序工作。但是,在触发可能发送本地广播的代码之前,先接收本地广播是有意义的。@Frog:另外,在开始活动之前注册接收者。由于启动服务、分叉后台线程等方面的开销,您的代码可能大部分时间都会按照您拥有的顺序工作。但是,在触发可能发送本地广播的代码之前,先接收本地广播是有意义的。
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
                      activeNetwork.isConnectedOrConnecting();
 <receiver android:name=".BroadcastReceiver" >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />

        </intent-filter>
    </receiver>
public boolean isOnline(Context context) {
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    //should check null because in air plan mode it will be null
    return (netInfo != null && netInfo.isConnected());

}