在豆形软糖android.net.conn.CONNECTIVITY_CHANGE广播接收器不火的V

2019-10-22 23:35发布

这是清单部分

  <receiver
            android:name="my.com.app.ConnectivityModifiedReceiver"
            android:label="NetworkConnection" >
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
        </receiver>

这是Java代码

public class my.com.app.ConnectivityModifiedReceiver extends BroadcastReceiver {


    @Override
    public void onReceive(Context context, Intent intent) {

        context.sendBroadcast(new Intent("ConnectivityModified"));

    }

}

ConnectivityModifiedReceiver将根据网络连接change.In我的情况下,VPN连接和断开发送意图。

我得到的棒棒糖但不是在杰利贝恩意图。

PLZ帮助

Answer 1:

到目前为止,在我的调查结果

在棒棒糖

当任VPN连接或断开android.net.conn.CONNECTIVITY_CHANGE广播仅触发。

所以,你可以使用下面的代码片段与你有棒棒糖预设备的逻辑一起。

@Override
public void onReceive(Context context, Intent intent) {

   Bundle bundle = intent.getExtras();

   String KeyNI="networkInfo";

   android.net.NetworkInfo bundleNetworkInfo=(android.net.NetworkInfo)bundle.get(KeyNI);


   if(!bundleNetworkInfo.getTypeName().toString().equalsIgnoreCase("VPN"))
   {
      context.sendBroadcast(new Intent("ConnectivityModified"));
   }

}

希望这可以帮助。



Answer 2:

如果它可以帮助你可能给这对你的onReceive一试:

@Override
public void onReceive(Context context, Intent intent) {
    final ConnectivityManager connMgr = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = connMgr.getActiveNetworkInfo();
    // should check null because in air plan mode it will be null
    if (netInfo != null && netInfo.isConnected()) {
        System.out.println("INTERNET IS AVAILABLE");
    } else {
        System.out.println("INTERNET UNAVAILABLE");
    }
}

你可以把你的逻辑if语句里面。



文章来源: android.net.conn.CONNECTIVITY_CHANGE broadcast receiver not fires in JellyBean for VPN connection and disconnection