我在 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();
}
}
** 不要忘记在您的 manifest 文件中添加使用互联网的权限:
<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/