Android 7.0 を実行している特定のタブレットで使用するアプリを開発しています。私は a を使用しService
て定期的な s を送信していますDatagramPacket
。モバイル ネットワークしか使用できません。ConnectivityManager
、 、NetworkInfo
を使用して接続ステータスを確認しますDetailedState
。次のコードでネットワークの状態を取得します。
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
DetailedState networkState = activeNetwork.getDetailedState();
- タブレットが接続されていて、画面がオンまたはオフの場合、CONNECTED状態になります。
- テーブルが取り外され、画面がオンの場合、CONNECTED 状態になります。
- テーブルが取り外され、画面がオフの場合、ブロック状態になります。
私のタブレットでは、データセーバーがオフになっています。念のため、画面がオフになったときに制限がないことを確認するテストを実行しました。ネットワークがブロックされている場合でも、cm.getRestrictBackgroundStatus()
常に 1 を返します。これはRESTRICT_BACKGROUND_STATUS_DISABLEDです。
では、なぜネットワークがブロックされているのでしょうか。私のアプリには特別な権限が必要ですか? タブレットには特別な設定が必要ですか?