android - 连接更改上的 API Hook

标签 android web-services service architecture

我在 Android 手机上有一个打印机检查应用程序,它的基本检查表
即使检查员没有互联网连接,也可以进行打印机检查,

一旦手机恢复接收/互联网状态,我想提交检查。

我正在考虑使用 Android 服务来设计应用程序
因此它将使用sqlite保存检查详细信息,然后当有互联网连接时重新提交检查。

但这需要服务定期检查互联网。并且会消耗大量电池电量。

我可以为我的应用程序注册一个钩子(Hook)来通知应用程序或互联网连接上的服务吗?

最佳答案

简单检查Wi-fi移动互联网,如下...

Manifest.xml 中:

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


创建一个新的BroadcastReceiver:

public class ConnectivityChangeReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(final Context context, final Intent intent) {

        if(checkInternet(context))
        {
            Toast.makeText(context, "Network Available Do operations",Toast.LENGTH_LONG).show(); 
        }

    }

    boolean checkInternet(Context context) {
        ServiceManager serviceManager = new ServiceManager(context);
        if (serviceManager.isNetworkAvailable()) {
            return true;
        } else {
            return false;
        }
    }
}


最后是 ServiceManager 类:

public class ServiceManager {

    Context context;

    public ServiceManager(Context base) {
        context = base;
    }

    public boolean isNetworkAvailable() {
        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = cm.getActiveNetworkInfo();
        return networkInfo != null && networkInfo.isConnected();
    }
}


** 不要忘记在您的 ma​​nifest 文件中添加使用互联网的权限:

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



另请查看 vogella.com 上这篇超酷的文章 AndroidServices ...

关于android - 连接更改上的 API Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44741016/

相关文章:

web-services - 我可以这样做吗? Apache + mod_jk + Tomcat + Axis

ios - 从 iOS 和 JSON 解析调用 ASP.NET webmethod

android - 如何在viewpager中启用全页滑动?

android - 如何获取我点击的列表项数据?

android - 根据两个或多个 EditText 字段中的输入启用/禁用按钮的优雅方式

java - 使用java获取REST Web服务中http请求的内容

c# - 从 Windows 服务打开对话窗口

android 绑定(bind)到 AccessibilityService

带广播接收器的 Android 警报管理器

java - 从 Android 示例上传 Azure 存储 block Blob