我正在编写一个在您启动手机时运行的服务,但您需要Internet连接和连接才能发送SMS运营商。
我在ConnectionManager
写了一个函数,就像在其他帖子中看到的一样,但我总是得到相同的答案:NullPointerException
,当我执行以下操作时:
我将cm
定义为ConnectionManager
和
NetworkInfo NetInfo = cm.getNetworkInfo();
不是因为这个吗?
我该如何解决?
很抱歉,如果我没有把所有代码......
我在ACTION_BOOT_COMPLETED激活的服务的OnStart()方法中有以下内容......
@ Override
public void OnStart (Intent intent, int start) {
Context aplCtx = getApplicationContext ();
IsConnected boolean = false;
while (! IsConnected) {
try {
IsConnected = IsOnline (aplCtx);
} Catch (Exception e) {
Log.d (e.toString ());
}
}
.....
}
private boolean IsOnline (Context ctx) {
boolean result = false;
try {
ConnectivityManager cm = (ConnectivityManager) ctx.getSystemService (Context.CONNECTIVITY_SERVICE);
cm.getActiveNetworkInfo NetworkInfo ni = ();
if (ni! = null) {
if (ni.getState () == NetworkInfo.State.CONNECTED) {
result = true;
}
}
return result;
}
由于这是一个后台功能,并且在启动智能手机之后,操作系统会在我们获得Internet连接之前强行终止该进程。我怎么解决这个问题? 如何让操作系统不会终止进程并使用Internet连接来执行以下操作?
答案 0 :(得分:1)
没有你的代码,我们不能说什么出错,
但是要获取网络信息我正在使用它,如果你没有犯错那么它也可以,
public static boolean netConnect(Context ctx){
ConnectivityManager cm ;
NetworkInfo info = null;
try {
cm = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
info = cm.getActiveNetworkInfo();
} catch (Exception e) {
Log.e("connectivity", e.toString());
}
if(info != null){
return info.isConnected();
}else{
return false;
}
}