【问题标题】:Check if background restriction data is enabled or not?检查是否启用了后台限制数据?
【发布时间】:2015-05-13 05:30:22
【问题描述】:

我有一个在主线程上运行而不是在后台运行的服务。在服务中,我正在通过广播接收器检查网络连接。当我在“设置”中启用启用限制数据时,broadcastreciver 可以很好地捕捉意图,但我的应用程序禁用了互联网连接(移动数据),尽管它在我的设备上。我见过this questionandroid docs

intentFilter.addAction("android.net.conn.ACTION_BACKGROUND_DATA_SETTING_CHANGED");
    intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
    registerReceiver(this.connectionStatusReceiver, intentFilter);


private BroadcastReceiver connectionStatusReceiver = new BroadcastReceiver() {
    @Override
    public synchronized void onReceive(Context context, Intent intent) {
        log.info("connection state changed");            
        checkConnectionState();
    }
};

 getActiveNetworkInfo() - *will always display CONNECTED when i switch on *restriction**

还有一件事,当我打开后台数据限制时,我检查了intent.getAction。它总是返回android.net.conn.CONNECTIVITY_CHANGE。 如何查看后台限制数据是否开启/关闭?

【问题讨论】:

  • 我怎样才能知道用户是否在我的应用程序的设置中打开了后台数据限制

标签: android broadcastreceiver restriction


【解决方案1】:

您可以从 Android 7.0 (API 24) 及更高版本进行检查。 Google 在他们的 android 开发者网站中添加了 howto。这是链接Optimizing Network Data Usage

【讨论】:

    【解决方案2】:

    1.使用以下代码检查wifi或移动数据是否已打开。

    public boolean isConnectingToInternet()
        {
    
            ConnectivityManager connectivity = 
                                 (ConnectivityManager) getApplicationContext().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;
        }
    
    1. 然后根据真假,检查受限数据:

      if(isConnectingToInternet())
      {
      
            /*
            your code to check network state*/
      
      }
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-23
      • 1970-01-01
      • 2011-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-29
      相关资源
      最近更新 更多