NetworkInfo上的NullPointerException

时间:2011-11-23 10:38:10

标签: android

我正在编写一个在您启动手机时运行的服务,但您需要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连接来执行以下操作?

1 个答案:

答案 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;
    }
}