2017-06-12 6 views
0

私はここで問題を解決しましたが、インターネットが無効のときにAndroidエミュレータで試してみると、クラッシュします。ここで は私が試したコードです:私はAndroidでインターネット接続のステータスを取得しようとしていますが、それを正しく取得できません

cm= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 

    if(cm.getActiveNetworkInfo() != null)connect=true; 
    if(connect){ 

      new AsyncTask<URL,Integer, Long>() { 
       @Override 
       protected Long doInBackground(URL... params) { 
        try { 
         InetAddress ipAddr = InetAddress.getByName("http://www.google.com "); 
         if (ipAddr.equals(""))connect=false; 
        } catch (UnknownHostException e) { 
         e.printStackTrace(); 
        } 

        return null; 
       } 

インターネットは私のラップトップで無効になっているときに、ブール変数「接続は、」偽でなければなりませんが、それは常に真です。 このコードは、私のonResumeメソッドにあります。

+0

を、あなたは非同期タスクを実行していますか? – SoroushA

答えて

0

あなたの問題は、最終変数connectを変更しようとしていることです。匿名クラス内で変数を使用すると、自動的に最終変数になります。したがって、変数を変更することはできません。あなたの仕事からbooleanを返して、代わりにconnectにそれを割り当てるべきです。

AsyncTask mTask = new AsyncTask<URL,Integer, Boolean>() { 
       @Override 
       protected Long doInBackground(URL... params) { 
        InetAddress ipAddr = new String(); 
        try { 
         InetAddress ipAddr = InetAddress.getByName("http://www.google.com "); 

        } catch (UnknownHostException e) { 
         e.printStackTrace(); 
        } 

       return ipAddr.equals(""); 
      } 
} 

、その後、結果を取得:

mTask.execute(); 
connect = mTask.get(); 
+0

ありがとう、私はJavaに関するいくつかの本を読んだが、これは私がこの規則について読んで初めてのことである。あなたはどうやってそれについて知ったのですか? – Harsha

+0

私はそれを試したところ、 "doInBackground()の実行中にエラーが発生しました"というエラーメッセージが表示される – Harsha

+0

スタックトレースは何ですか? – SoroushA

関連する問題