2

getActiveNetworkInfo()Android 4.0 以降のdeprecated の代わりに を使用するとConnectivityManager.getBackgroundDataSetting() 、変更 (制限) されたときにバックグラウンド データの設定が反映されません。他の選択肢はありますか?

コード スニペットは次のとおりです。

 ConnectivityManager connectivityManager;
 connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

    if(connectivityManager != null) { 
        NetworkInfo info = connectivityManager.getActiveNetworkInfo();
        if (info.isConnected() == true) {
            System.out.println("running");
            Toast.makeText(context, "Background settings enabled", Toast.LENGTH_SHORT).show();

        } else {
            System.out.println("active network info null"); 
            System.out.println("enable background services");
            Toast.makeText(context, "background settings disabled", Toast.LENGTH_SHORT).show();
        }
    } else {
        LogUtil.w(getClass(), "Application does not have ACCESS_NETWORK_STATE Permission");
    }

注: " if(connectivityManager.getBackgroundDataSetting()" は 2.3.3 で機能しますが、Android 4.0 以降では " " に置き換えるとif (info.isConnected() == true)、バックグラウンド データ設定が制限されている場合でも常に true が返されます。

参照

4

1 に答える 1

0

Android 4.x は、アプリがフォアグラウンドにないときにチェックが行われると、接続されていないことを返すだけです。他のアプリがフォアグラウンドにあるときに、サービスでこのチェックを行うように手配できるかどうかを確認してください。

于 2014-03-03T16:02:42.597 に答える