【问题标题】:How to upload data onto the server whenever network found?发现网络时如何将数据上传到服务器?
【发布时间】:2015-04-21 08:11:29
【问题描述】:

我基于网络连接的android应用程序,当我的手机连接到互联网时它工作正常,但是当互联网连接断开时它停止工作(肥胖),没有自动连接。

我想在互联网可用时将数据放到服务器上。

任何帮助都会对我有所帮助。

NetworkBroadcastReceiver.java

public class NetworkBroadcastReceiver extends BroadcastReceiver {
private static ConnectivityManager mConnectivityManager;

public NetworkBroadcastReceiver() {
}

@Override
public void onReceive(Context context, Intent intent) {
    // TODO: This method is called when the BroadcastReceiver is receiving
    // an Intent broadcast.
    if (isNetworkAvailable(context))
        Toast.makeText(context, "Connected", Toast.LENGTH_LONG).show();
    else
        Toast.makeText(context, "Not Connected", Toast.LENGTH_LONG).show();
}

/**
 *
 * @param context
 * @return
 */
public static boolean isNetworkAvailable(Context context) {
    boolean isMobile = false;
    boolean isWifi = false;

    NetworkInfo[] infoAvailableNetworks = getConnectivityManager(context).getAllNetworkInfo();

    if (infoAvailableNetworks != null) {
        for (NetworkInfo network : infoAvailableNetworks) {

            if (network.getType() == ConnectivityManager.TYPE_WIFI) {
                if (network.isConnected() && network.isAvailable())
                    isWifi = true;
            }
            if (network.getType() == ConnectivityManager.TYPE_MOBILE) {
                if (network.isConnected() && network.isAvailable())
                    isMobile = true;
            }
        }
    }

    return isMobile || isWifi;
}

/**
 * Return connectivity manager instance.
 * @return mConnectivityManager
 */
public static ConnectivityManager getConnectivityManager(Context context) {

    if (mConnectivityManager == null) {
        mConnectivityManager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
    }

    return mConnectivityManager;
}

}

Manifest.xml

<receiver
        android:name=".receiver.NetworkBroadcastReceiver"
        android:enabled="true"
        android:exported="true" >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
            <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
        </intent-filter>
    </receiver>

【问题讨论】:

  • 使用广播接收器捕获互联网连接
  • 我正在使用广播但不知道如何连接,我正在上传我的广播代码。
  • 您是否在清单中声明了它。参考这个stackoverflow.com/questions/15698790/…
  • 一旦您获得互联网连接的广播,启动服务以将您的数据发送到服务器,在数据提交到服务器后停止服务。
  • 如我所见,您的BroadcastReceiver 是一个匿名类,因此您无法在Manifest 中声明它。请提供您的Activity 和 AndroidManifest.xml 的完整代码

标签: android


【解决方案1】:

要检查网络状态,请确保您已在清单中声明 ACCESS_NETWORK_STATE 权限

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

【讨论】:

  • 您的广播接收器根本没有被调用吗?还是 isNetworkAvailable 方法无法正常工作?如果广播接收器没有得到广播是问题,请尝试在清单中包含整个包名 android:name="com.example.receiver.NetworkBroadcastReceiver"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
  • 2015-01-05
  • 2011-09-02
相关资源
最近更新 更多