2016-06-27 3 views
4

スタックオーバーフローが検索され、アプリでこの設定が検出されませんでした。 - >データの使用 - >マイアプリケーション - >トグル私は警告したいAndroidアプリで「バックグラウンドデータを制限する」が有効になっているかどうかをプログラムで検出する

「セルラーネットワーク上の無効背景データ」と「アプリのバックグラウンドデータを制限する」ための

セッティング:Androidのマシュマロの設定でオプションがありますユーザーが私のアプリでこれが設定されている場合。これは私のアプリに設定されている場合、どのように検出することができます。任意のポインタが高く評価されました。背景データは、(getActiveNetworkInfo、使用できない場合

+1

がこの解決策を見つけましたか? –

+0

また、携帯電話全体または自分のアプリだけのバックグラウンドデータが無効になっているかどうかを確認するにはどうすればよいですか? – Zapnologica

答えて

0

あなたは今 が切断されて表示されます)getActiveNetworkInfo()

を使用することができます。 FYI

Reference

は、Android基準によれば、getBackgroundDataSetting

は、バックグラウンドデータ使用の設定の値を返します。 falseの場合、アプリケーションが フォアグラウンドにない場合、 アプリケーションはネットワークを使用すべきではありません。アンドロイド7.0(APIレベル24)で始まる最新のAndroidのドキュメント毎の

しかし、これは、APIレベルで廃止されました14

+0

getActiveNetworkInfo()の問題は、WiFiに接続しているときに接続されていることです。アプリでCellular ..の背景設定が無効になっているかどうかは分かりません。 – user3570727

0

...

https://developer.android.com/training/basics/network-ops/data-saver.html

ConnectivityManager connMgr = (ConnectivityManager) 
    getSystemService(Context.CONNECTIVITY_SERVICE); 
// Checks if the device is on a metered network 
if (connMgr.isActiveNetworkMetered()) { 
    // Checks user’s Data Saver settings. 
    switch (connMgr.getRestrictBackgroundStatus()) { 
    case RESTRICT_BACKGROUND_STATUS_ENABLED: 
    // Background data usage is blocked for this app. Wherever possible, 
    // the app should also use less data in the foreground. 

    case RESTRICT_BACKGROUND_STATUS_WHITELISTED: 
    // The app is whitelisted. Wherever possible, 
    // the app should use less data in the foreground and background. 

    case RESTRICT_BACKGROUND_STATUS_DISABLED: 
    // Data Saver is disabled. Since the device is connected to a 
    // metered network, the app should use less data wherever possible. 
    } 
} else { 
    // The device is not on a metered network. 
    // Use data as required to perform syncs, downloads, and updates. 
} 

データセーバー環境設定の変更を監視する Appsは、データセーバー環境設定の変更を監視するには、BroadcastReceiver ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGEDを​​リッスンし、Context.registerReceiver()で受信者を動的に登録します。アプリがこのブロードキャストを受信すると、新しいData Saver環境設定がConnectivityManager.getRestrictBackgroundStatus()を呼び出してそのアクセス許可に影響するかどうかを確認する必要があります。

注:このブロードキャストは、Context.registerReceiver()で動的に登録するアプリケーションにのみ送信されます。マニフェストでこのブロードキャストを受信するために登録するアプリは受信しません。

関連する問題