1

android plsのブロードキャストレシーバーでインテントを使用してインターネットを有効にすることはできますか?アプリが開いていないときにバックグラウンドプロセスを正確に実行したいネットワークステータスを検出したい

4

5 に答える 5

7

以下のコードを試してください、

public class ConnectionAvailable extends BroadcastReceiver {

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

    ConnectivityManager manager = (ConnectivityManager) context
            .getSystemService(context.CONNECTIVITY_SERVICE);
    boolean is3g = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
            .isConnectedOrConnecting();
    boolean isWifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
            .isConnectedOrConnecting();

    if (!is3g && !isWifi) {

        Toast.makeText(context, "Internet Connection Lost",
                Toast.LENGTH_LONG).show();

    } else {
        if ((intent.getAction() != null)
                && (intent.getAction()
                        .equals("android.intent.action.AIRPLANE_MODE"))) {
            Toast.makeText(context, "Internet Connection Lost",
                    Toast.LENGTH_LONG).show();               
        }
    }
}
}

これはあなたを助けるかもしれません。

于 2012-10-15T05:56:25.973 に答える
1

次のコードを試してください。

private void setMobileDataEnabled(Context context, boolean enabled) {
final ConnectivityManager conman = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
final Class conmanClass = Class.forName(conman.getClass().getName());
final Field iConnectivityManagerField = conmanClass.getDeclaredField("mService");
iConnectivityManagerField.setAccessible(true);
final Object iConnectivityManager = iConnectivityManagerField.get(conman);
final Class iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName());
final Method setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
setMobileDataEnabledMethod.setAccessible(true);

setMobileDataEnabledMethod.invoke(iConnectivityManager, enabled);
 }
于 2012-10-15T05:32:33.040 に答える
1
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo[] netInfo = cm.getAllNetworkInfo();
    for (NetworkInfo ni : netInfo) {
        if (ni.getTypeName().equalsIgnoreCase("WIFI"))
            if (ni.isConnected())
                haveConnectedWifi = true;
        if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
            if (ni.isConnected())
                haveConnectedMobile = true;
    }
    return haveConnectedWifi || haveConnectedMobile;
于 2012-10-15T05:32:34.560 に答える
1
  public static boolean isNetworkAvailable(Context context) {
             ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
             if (connectivity != null) {
                NetworkInfo[] info = connectivity.getAllNetworkInfo();
                if (info != null) {
                   for (int i = 0; i < info.length; i++) {
                      if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                          return true;
                      }
                   }
                }
             }
             return false;
          }
于 2012-10-15T05:32:51.893 に答える
1
  public boolean isOnline() {
    ConnectivityManager cm =
        (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    if (netInfo != null && netInfo.isConnectedOrConnecting()) {
        return true;
    }
    return false;}
   and add this permission     

このメソッドを呼び出して、マニフェストファイルにこの権限を追加します<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

于 2012-10-15T05:34:48.300 に答える