2017-11-21 27 views
-1

왜이 오류가 발생하고 앱이 멈 춥니 다. 모든 도메인을 변경하려고하며 모든 도메인을 사용할 수 있습니다. 휴대 전화는 인터넷에 연결되어 있으며 매니페스트에서는 인터넷 전제를 잊지 않습니다. 나는 내가 잊어 버린 것을 모른다. 버튼을 클릭하고 isNetworkAvailable() 부울이 View를 지원하지 않는다고 생각합니다.Android 앱이 웹에서 데이터를 가져올 수 없음

줄 : 34 : socket.connect (새 InetSocketAddress ("example.com", 80), 2000) ;

라인 : 97 :

public boolean isNetworkAvailable() { 
    try (Socket socket = new Socket()) { 
     socket.connect(new InetSocketAddress("example.com", 80), 2000); 
     return true; 
    } catch (IOException e) { 
     // Either we have a timeout or unreachable host or failed DNS lookup 
     System.out.println(e); 
     return false; 
    } 
} 

로그 캣 : (isNetworkAvailable()) {

public void setnewuser(View v){ 
     EditText benutzername = (EditText) findViewById(R.id.benutzername); 
     TextView error = (TextView) findViewById(R.id.error); 


    if (benutzername.getText().toString().trim() != "") { 

      String newusid = null; 
      URL url = null; 
      if(isNetworkAvailable()) { 
       try { 
        url = new URL(gamehost + "/newuser.php"); 
        String readLine = null; 
        String sResult = null; 
        BufferedReader buffReader = new BufferedReader(new InputStreamReader(url.openStream())); 
        while ((readLine = buffReader.readLine()) != null) { 
         if (sResult == null) { 
          sResult = readLine; 
         } else { 
          sResult = sResult + readLine; 
         } 
        } 
        newusid = sResult; 
       } catch (MalformedURLException me) { 
        me.printStackTrace(); 
       } catch (IOException ioe) { 
        ioe.printStackTrace(); 
       } 
      } 
      String userid = newusid; 
      if(userid != "") { 
       editor.putString("username", benutzername.getText().toString().trim()); 
       editor.commit(); 
       editor.putString("userid", userid); 
       editor.commit(); 
       startActivity(new Intent(Setname.this, Game.class)); 
       finish(); 
      }else{ 
       error.setText(R.string.needinternetforregist); 
      } 



    } else { 
     error.setText(R.string.etwaseingeben); 
    } 

isNetworkAvailabe() 부울 경우

                   Process: de.gamer.myapp, PID: 13895 
                       java.lang.IllegalStateException: Could not execute method for android:onClick 
                        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293) 
                        at android.view.View.performClick(View.java:6213) 
                        at android.widget.TextView.performClick(TextView.java:11074) 
                        at android.view.View$PerformClick.run(View.java:23645) 
                        at android.os.Handler.handleCallback(Handler.java:751) 
                        at android.os.Handler.dispatchMessage(Handler.java:95) 
                        at android.os.Looper.loop(Looper.java:154) 
                        at android.app.ActivityThread.main(ActivityThread.java:6692) 
                        at java.lang.reflect.Method.invoke(Native Method) 
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468) 
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358) 
                        Caused by: java.lang.reflect.InvocationTargetException 
                        at java.lang.reflect.Method.invoke(Native Method) 
                        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                        at android.view.View.performClick(View.java:6213)  
                        at android.widget.TextView.performClick(TextView.java:11074)  
                        at android.view.View$PerformClick.run(View.java:23645)  
                        at android.os.Handler.handleCallback(Handler.java:751)  
                        at android.os.Handler.dispatchMessage(Handler.java:95)  
                        at android.os.Looper.loop(Looper.java:154)  
                        at android.app.ActivityThread.main(ActivityThread.java:6692)  
                        at java.lang.reflect.Method.invoke(Native Method)  
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)  
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)  
                        Caused by: android.os.NetworkOnMainThreadException 
                        at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1303) 
                        at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:86) 
                        at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:74) 
                        at java.net.InetAddress.getByName(InetAddress.java:708) 
                        at java.net.InetSocketAddress.<init>(InetSocketAddress.java:232) 
                        at de.gamer.Setname.isNetworkAvailable(Setname.java:34) 
                        at de.gamer.Setname.setnewuser(Setname.java:97) 

답변

0

Caused by: android.os.NetworkOnMainThreadException

그 너를 의미한다. 전자는 메인 스레드에서 인터넷에 연결하려고합니다.

비동기 작업을 사용해야합니다.

+0

아이디어가 있습니까? Java로 시작하여 Java에서 programm가 완벽하지 않습니다. – DavidsProTv

+0

자바가 android와 동일하지 않습니다 – diegoveloper

+0

예 저는 알고 있지만 매우 유사합니다. – DavidsProTv