2016-12-13 4 views
-2

ошибка, с которой я сталкиваюсь, когда я запускаю это приложение на эмуляторе на студии Android, все прекрасно и хорошо работает, но когда я подключаю свой телефон и попробуйте запустить приложение на нем это ошибка, что я перед этим ...моя работа с приложением на эмуляторе, но на моем телефоне не работает

D/ViewRootImpl: ViewPostImeInputStage processPointer 0 
D/ViewRootImpl: ViewPostImeInputStage processPointer 1 
I/System.out: (HTTPLog)-Static: isSBSettingEnabled false 
I/System.out: (HTTPLog)-Static: isSBSettingEnabled false 
W/DisplayListCanvas: DisplayListCanvas is started on unbinded RenderNode 
W/System.err: java.net.ConnectException: failed to connect to /10.0.2.2 
(port 80): connect failed: ECONNREFUSED (Connection refused) 
W/System.err:  at libcore.io.IoBridge.connect(IoBridge.java:124) 
W/System.err:  at 
java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183) 
W/System.err:  at 
java.net.PlainSocketImpl.connect(PlainSocketImpl.java:452) 
W/System.err:  at java.net.Socket.connect(Socket.java:884) 
W/System.err:  at  
com.android.okhttp.internal.Platform.connectSocket(Platform.java:117) 
W/System.err:  at  
com.android.okhttp.internal.http.SocketConnector.connectRawSocket 
(SocketConnecto r.java:434) 
W/System.err:at 
     com.android.okhttp.internal.http.SocketConnector.connectCleartext 
(SocketConnecto  r.java:105) 
W/System.err: 
at   com.android.okhttp.Connection.connect(Connection.java:1331) 
W/System.err: 
at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:1410) 
W/System.err: 
at com.android.okhttp.OkHttpClient$1.connectAndSetOwner 
(OkHttpClient.java:128) 
W/System.err:  at 
com.android.okhttp.internal.http.HttpEngine.nextConnection 
(HttpEngine.java:466) 
    W/System.err:  at com.android.okhttp.internal.http.HttpEngine.connect 
    (HttpEngine.java:447) 
    W/System.err:  at 
com.android.okhttp.internal.http.HttpEngine.sendRequest 

(HttpEngine.java:353) 
    W/System.err:  at 
    com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute 
    (HttpURLConnectionImpl.java:476) 
    W/System.err:  at  
    com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect 
    (HttpURLConnectionImpl.java:118) 
    W/System.err:  at 
    com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream 
    (HttpURLConnectionImpl.java:249) 
    W/System.err:  at 
    com.example.win10user.project.BackgroundWorker.doInBackground 
    (BackgroundWorker.java:46) 
    W/System.err:  at 
    com.example.win10user.project.BackgroundWorker.doInBackground 
(BackgroundWorker.java:21) 
    W/System.err:  at android.os.AsyncTask$2.call(AsyncTask.java:295) 
    W/System.err:  at  java.util.concurrent.FutureTask.run 
    (FutureTask.java:237) 
    W/System.err:  at android.os.AsyncTask$SerialExecutor$1.run 
    (AsyncTask.java:234) 
    W/System.err:  at java.util.concurrent.ThreadPoolExecutor.runWorker 
    (ThreadPoolExecutor.java:1113) 
    W/System.err:  at java.util.concurrent.ThreadPoolExecutor$Worker.run 
    (ThreadPoolExecutor.java:588) 
    W/System.err:  at java.lang.Thread.run(Thread.java:818) 
    W/System.err: Caused by: android.system.ErrnoException: connect failed: 
    ECONNREFUSED (Connection refused) 
    W/System.err:  at libcore.io.Posix.connect(Native Method) 
    W/System.err:  at 
    libcore.io.BlockGuardOs.connect(BlockGuardOs.java:111) 
    W/System.err:  at 
     libcore.io.IoBridge.connectErrno(IoBridge.java:137) 
    W/System.err:  at libcore.io.IoBridge.connect(IoBridge.java:122) 
    W/System.err: ... 23 more 
    D/AndroidRuntime: Shutting down VM 
    E/AndroidRuntime: FATAL EXCEPTION: main 
       Process: com.example.win10user.project, PID: 10042 
       java.lang.NullPointerException: Attempt to invoke virtual 
    method 'boolean java.lang.String.equals(java.lang.Object)' on a null   
    object reference 
        at 
    com.example.win10user.project.BackgroundWorker.onPostExecute 
    (BackgroundWorker.java:120) 
        at 
    com.example.win10user.project.BackgroundWorker.onPostExecute 
    (BackgroundWorker.java:21) 
        at android.os.AsyncTask.finish(AsyncTask.java:651) 
        at android.os.AsyncTask.access$500(AsyncTask.java:180) 
        at  android.os.AsyncTask$InternalHandler.handleMessage 
     (AsyncTask.java:668) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:158) 
        at android.app.ActivityThread.main 
     (ActivityThread.java:7229) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at   
    com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run 
     (ZygoteInit.java:1230) 
        at  com.android.internal.os.ZygoteInit.main 
     (ZygoteInit.java:1120) 
     I/Process: Sending signal. PID: 10042 SIG: 9 
     Application terminated. 

это backgroundWorker.java активность пакет com.example.win10user.project;

public class BackgroundWorker extends AsyncTask<String,Void,String> { 
    Context context; 
    AlertDialog alertDialog; 
BackgroundWorker (Context ctx) { 
    context = ctx; 
} 
@Override 
protected String doInBackground(String... params) { 
    String type = params[0]; 
    String myURL = "http://10.0.2.2:80/"; 
    String login_url = myURL+"login.php"; 
    String register_url = myURL+"sign.php"; 
    if(type.equals("login")) { 
     try { 

      String user_name = params[1]; 
      String password = params[2]; 
      URL url = new URL(login_url); 
      HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection(); 
      httpURLConnection.setRequestMethod("POST"); 
      httpURLConnection.setDoOutput(true); 
      httpURLConnection.setDoInput(true); 
      OutputStream outputStream = httpURLConnection.getOutputStream(); 
      BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8")); 
      String post_data = URLEncoder.encode("user_name","UTF-8")+"="+URLEncoder.encode(user_name,"UTF-8")+"&" 
           +URLEncoder.encode("password","UTF-8")+"="+URLEncoder.encode(password,"UTF-8"); 
      bufferedWriter.write(post_data); 
      bufferedWriter.flush(); 
      bufferedWriter.close(); 
      outputStream.close(); 
      InputStream inputStream = httpURLConnection.getInputStream(); 
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1")); 
      String result=""; 
      String line=""; 
      while((line = bufferedReader.readLine())!= null) { 
       result += line; 
      } 
      bufferedReader.close(); 
      inputStream.close(); 
      httpURLConnection.disconnect(); 
      return result; 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    }else if(type.equals("register")) { 
     try { 
      String password = params[1]; 
      String name = params[2]; 
      String email = params[3]; 

      URL url = new URL(register_url); 
      HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection(); 
      httpURLConnection.setRequestMethod("POST"); 
      httpURLConnection.setDoOutput(true); 
      httpURLConnection.setDoInput(true); 
      OutputStream outputStream = httpURLConnection.getOutputStream(); 
      BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8")); 
      String post_data = URLEncoder.encode("password","UTF-8")+"="+URLEncoder.encode(password,"UTF-8")+"&" 
           +URLEncoder.encode("username","UTF-8")+"="+URLEncoder.encode(name,"UTF-8")+"&" 
           +URLEncoder.encode("email","UTF-8")+"="+URLEncoder.encode(email,"UTF-8"); 
      bufferedWriter.write(post_data); 
      bufferedWriter.flush(); 
      bufferedWriter.close(); 
      outputStream.close(); 
      InputStream inputStream = httpURLConnection.getInputStream(); 
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1")); 
      String result=""; 
      String line=""; 
      while((line = bufferedReader.readLine())!= null) { 
       result += line; 
      } 
      bufferedReader.close(); 
      inputStream.close(); 
      httpURLConnection.disconnect(); 
      return result; 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    return null; 
} 

@Override 
protected void onPreExecute() { 
    alertDialog = new AlertDialog.Builder(context).create(); 
    alertDialog.setTitle("Login Status"); 
} 
@Override 
protected void onPostExecute(String result) { 
    if(result.equals("Insert Successful")) { 

     Toast.makeText(context, "Done!! Please Login", Toast.LENGTH_LONG).show(); 
     Intent i = new Intent(context, MainActivity.class); 
     context.startActivity(i); 

    }else if(result.equals("This Email")) { 

     Toast.makeText(context, "This Email have an account!!! please Sign Up with another Email", Toast.LENGTH_LONG).show(); 

    }else if(result.equals("login")){ 

     Toast.makeText(context, "Welcome ",Toast.LENGTH_LONG).show(); 
     Intent i = new Intent(context,HomePage.class); 
     context.startActivity(i); 

    }else{ 
     Toast.makeText(context, "Email Or Password is Incorrect",Toast.LENGTH_LONG).show(); 
    } 
} 
@Override 
protected void onProgressUpdate(Void... values) { 

    super.onProgressUpdate(values); 
} 
} 

и это Main.java активность

public class MainActivity extends AppCompatActivity{ 
EditText EmailEt, PasswordEt; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.activity_main); 

    EmailEt = (EditText)findViewById(R.id.etEmail); 
    PasswordEt = (EditText)findViewById(R.id.etPassword); 
} 
public void OnLogin(View view) { 
    String username = EmailEt.getText().toString(); 
    String password = PasswordEt.getText().toString(); 
    if(TextUtils.isEmpty(username)) { 
     EmailEt.setError("Please Enter our Email"); 
     return; 
    }else if(TextUtils.isEmpty(password)) { 
     PasswordEt.setError("Please Enter Your Password"); 
     return; 
    }else { 
     String type = "login"; 
     BackgroundWorker backgroundWorker = new BackgroundWorker(this); 
     backgroundWorker.execute(type, username, password); 
    } 
} 

public void Register(View view){ 
    Intent intent = new Intent(MainActivity.this, Signup.class); 
    startActivity(intent); 
} 


} 

и это signup.java активность

public class Signup extends AppCompatActivity { 
EditText PasswordEt,NameEt,EmailEt; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_signup); 
    PasswordEt = (EditText)findViewById(R.id.etPassword); 
    NameEt = (EditText)findViewById(R.id.etName); 
    EmailEt = (EditText)findViewById(R.id.etEmail); 
} 
public void OnSubmit(View view) { 
    String str_pass = PasswordEt.getText().toString(); 
    String str_name  = NameEt.getText().toString(); 
    String str_email = EmailEt.getText().toString(); 

    if(TextUtils.isEmpty(str_name)) { 
     NameEt.setError("Please Enter Your Name"); 
     return; 
    }else if(TextUtils.isEmpty(str_pass)) { 
     PasswordEt.setError("Please Enter Your Password"); 
     return; 
    } else if(TextUtils.isEmpty(str_email)) { 
     EmailEt.setError("Please Enter Your Email"); 
     return; 
    }else if(!isValidEmaillId(EmailEt.getText().toString().trim())){ 
    EmailEt.setError("Please Enter A valid Email Like '[email protected]'"); 
     return; 
    }else { 
     String type = "register"; 
     BackgroundWorker backgroundWorker = new BackgroundWorker(this); 
     backgroundWorker.execute(type, str_pass, str_name, str_email); 
    } 
} 

public void Return(View view){ 
    Intent intent = new Intent(Signup.this, MainActivity.class); 
    startActivity(intent); 
} 

private boolean isValidEmaillId(String email){ 

return Pattern.compile("^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-] {2,}))@" 
      + "((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?" 
      + "[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\." 
      + "([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?" 
      + "[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|" 
     + "([a-zA-Z]+[\\w-]+\\.)+[a-zA-Z]{2,4})$").matcher(email).matches(); 
} 

} 
+1

Ваш doInBackground() в результате NULL. Сделайте нулевую проверку onpostexecute. И Его невозможно достичь 10.0.2.2. Проверьте, почему? – Raghavendra

+0

Вы проверили, что ваш телефон подключен к той же сети Wi-Fi, у которой есть этот адрес http://10.0.2.2:80/? –

ответ

0

Приложение работает на эмуляторе, потому что http://10.0.2.2:80/ доступна из него, что специальный адрес хоста для эмулятора.

Если вы хотите, чтобы это приложение также запускалось на устройствах, обновите адрес на IP-адрес вашего компьютера и убедитесь, что устройство и устройство находятся в одной сети (или используйте доменное имя, если служба размещена где-то в общедоступной сети).

0

http://10.0.2.2:80 предназначен только для вашего эмулятора. Вам нужно будет разместить ваши файлы PHP где-нибудь, чтобы он работал с вашим устройством.