2

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です。

では、なぜネットワークがブロックされているのでしょうか。私のアプリには特別な権限が必要ですか? タブレットには特別な設定が必要ですか?

4

2 に答える 2