【问题标题】:How to make call to service from receiver depends on Internet connected or not?如何从接收器拨打服务电话取决于是否连接了互联网?
【发布时间】:2012-05-11 05:18:44
【问题描述】:

我知道如何在活动中检查互联网是否可用,我的要求是,实际上我在设备离线(没有互联网)时将一些值存储在 DB 中,当涉及到在线时必须传递 DB 值到没有用户交互的服务器。我怎么能做到这一点。 我得到了这个例子How to check the Internet Connection periodically in whole application?,但它只适用于一项活动,如何使它成为全球性的。

【问题讨论】:

    标签: android using broadcast


    【解决方案1】:

    在你的接收器中使用它

    <receiver android:name=".UpdateReceiver" >
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
        </receiver>
    

    您的更新接收者

     public class UpdateReceiver extends BroadcastReceiver {
    
    @Override
    public void onReceive(Context context, Intent intent) {
    
    
          ConnectivityManager connectivityManager = (ConnectivityManager) 
                                       context.getSystemService(Context.CONNECTIVITY_SERVICE );
          NetworkInfo activeNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
          boolean isConnected = activeNetInfo != null && activeNetInfo.isConnectedOrConnecting();   
          if (isConnected)       
              Log.i("NET", "connecte" +isConnected);   
          else Log.i("NET", "not connecte" +isConnected);
        }
    }
    

    【讨论】:

    • yes.......实际上我已经在我的应用程序中实现了同样的事情。离线存储到数据库然后每当找到互联网连接时它会自动更新我的数据库在服务器上
    • 你能分享给我吗..如果可能的话,告诉我我怎样才能做到这一点。
    • 还没有,我不知道如何调用这个广播接收器和创建服务,bez。到目前为止,我还没有研究过这个主题..
    • 这个广播接收器会在找到新的网络连接时自动调用。首先试一试...在这个接收器中给出一些打印信息。然后运行应用程序。然后从设置中断开数据连接并再次连接。然后检查 logcat 是否在 logcat 中打印了一些东西
    • 如果成功了我们再看服务
    【解决方案2】:

    试试这个功能

    public static boolean isInternetAvailable(Context context) {
                ConnectivityManager cm =
                    (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
                NetworkInfo netInfo = cm.getActiveNetworkInfo();
                if (netInfo != null && netInfo.isConnectedOrConnecting()) {
                    return true;
                }
                return false;
            }
    

    在清单中

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    

    享受..

    【讨论】:

    • 清楚地阅读我的问题,我不是在问如何检查每个活动..如何在广播中进行。
    • 好吧,我认为没有任何与此相关的广播接收器...但是您可以设置计时器以定期检查上述功能中的互联网可用性,并且当您获得价值时,您可以这样做http请求..
    • 我可以,但我想在没有用户交互的情况下将这些值传递给服务器。
    • 是的,您可以在服务中编写计时器代码,不是吗?所以在应用程序启动时启动服务......并在服务本身中进行互联网检查和http请求逻辑
    • Raja 如你所问。你需要一个在 USER_PRESENT 启动的服务,在特定时间后检查互联网连接。如果互联网连接可用,则尝试连接服务器。注意电池,因此在用户在场时启动服务并在 SCREEN_OFF 上停止。我想你知道这些 USER_PRESNET 和 SCREEN_ON /OFF 接收器
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多