2016-04-09 5 views
-1

Ich versuche ein Online-Tutorial für die Registrierung und Anmeldung und ich implementieren alles. Aber mein Problem ist, wenn ich versuche, auf Register nach dem Ausfüllen des Formulars zu drücken und verbinden mit dem Netzwerk bricht es die Anwendung mit einem Fehler ab (leider learn2crackLogin wurde gestoppt)Android-Anwendung Wont Verbindung zu localhost (Wempserver)

Der Name der Anwendung ist learn2crachLogin. Ein I gehosteten die Datenbankdateien auf www in wempserver unter dem Namen learn2crack_login_api

ich Antworten auf schleimigeren Problem habe versucht, aber es hat nicht löst mein Problem

Ich bin mir nicht sicher, was Sie so Screenshots bitte benötigen lassen know me ..

hier ist mein Manifest

<uses-permission android:name="android.permission.INTERNET"> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
</uses-permission> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/logo1" 
    android:label="@string/app_name"> 

    <activity 
     android:label="@string/app_name" 
     android:name=".Login" 
     android:launchMode="singleTop" 
     android:windowSoftInputMode="adjustPan"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
       <category android:name="android.intent.category.LAUNCHER"/> 
       </intent-filter> 
    </activity> 
    <activity android:label="@string/app_name" android:name=".Register"> 

    </activity> 

    <activity android:label="@string/app_name" android:name=".Registered"> 

    </activity> 

    <activity android:label="Learn2Crack USER PANEL" android:name=".Main"> 

    </activity> 

    <activity android:label="@string/app_name" 
    android:name=".PasswordReset"> 

    </activity> 
    <activity android:label="@string/app_name" android:name=".ChangePassword"> 

    </activity> 

</application> 



</manifest> 

Und hier ist die UserFunctions.JAVA den lokalen Host-Link enthält

package learn2crack.com.learn2cracklogin.library; 

import java.util.ArrayList; 
import java.util.List; 
import org.apache.http.NameValuePair;  
import org.apache.http.message.BasicNameValuePair; 
import org.json.JSONObject; 
import android.content.Context; 

public class UserFunctions { 

private JSONParser jsonParser; 

//URL of the PHP API 
private static String loginURL = "http://10.0.2.2/learn2crack_login_api/"; 
private static String registerURL = "http://10.0.2.2/learn2crack_login_api/"; 
private static String forpassURL = "http://10.0.2.2/learn2crack_login_api/"; 
private static String chgpassURL = "http://10.0.2.2/learn2crack_login_api/"; 

private static String login_tag = "login"; 
private static String register_tag = "register"; 
private static String forpass_tag = "forpass"; 
private static String chgpass_tag = "chgpass"; 

// constructor 
public UserFunctions(){ 
    jsonParser = new JSONParser(); 
} 

/** 
* Function to Login 
**/ 

public JSONObject loginUser(String email, String password){ 
    // Building Parameters 
    List params = new ArrayList(); 
    params.add(new BasicNameValuePair("tag", login_tag)); 
    params.add(new BasicNameValuePair("email", email)); 
    params.add(new BasicNameValuePair("password", password)); 
    JSONObject json = jsonParser.getJSONFromUrl(loginURL, params); 
    return json; 
} 

/** 
* Function to change password 
**/ 

public JSONObject chgPass(String newpas, String email){ 
    List params = new ArrayList(); 
    params.add(new BasicNameValuePair("tag", chgpass_tag)); 

    params.add(new BasicNameValuePair("newpas", newpas)); 
    params.add(new BasicNameValuePair("email", email)); 
    JSONObject json = jsonParser.getJSONFromUrl(chgpassURL, params); 
    return json; 
} 

/** 
* Function to reset the password 
**/ 

public JSONObject forPass(String forgotpassword){ 
    List params = new ArrayList(); 
    params.add(new BasicNameValuePair("tag", forpass_tag)); 
    params.add(new BasicNameValuePair("forgotpassword", forgotpassword)); 
    JSONObject json = jsonParser.getJSONFromUrl(forpassURL, params); 
    return json; 
} 

/** 
* Function to Register 
**/ 
public JSONObject registerUser(String fname, String lname, String email,  String uname, String password){ 
    // Building Parameters 
    List params = new ArrayList(); 
    params.add(new BasicNameValuePair("tag", register_tag)); 
    params.add(new BasicNameValuePair("fname", fname)); 
    params.add(new BasicNameValuePair("lname", lname)); 
    params.add(new BasicNameValuePair("email", email)); 
    params.add(new BasicNameValuePair("uname", uname)); 
    params.add(new BasicNameValuePair("password", password)); 
    JSONObject json = jsonParser.getJSONFromUrl(registerURL,params); 
    return json; 
} 

/** 
* Function to logout user 
* Resets the temporary data stored in SQLite Database 
* */ 
public boolean logoutUser(Context context){ 
    DatabaseHandler db = new DatabaseHandler(context); 
    db.resetTables(); 
    return true; 
} 

} 

Das ist mein register.java Paket learn2crack.com.learn2cracklogin;

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.Context; 
import android.content.Intent; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

import learn2crack.com.learn2cracklogin.library.DatabaseHandler; 
import learn2crack.com.learn2cracklogin.library.UserFunctions; 

import org.json.JSONException; 
import org.json.JSONObject; 

import java.io.IOException; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.URL; 

public class Register extends Activity { 

/** 
* JSON Response node names. 
**/ 

private static String KEY_SUCCESS = "success"; 
private static String KEY_UID = "uid"; 
private static String KEY_FIRSTNAME = "fname"; 
private static String KEY_LASTNAME = "lname"; 
private static String KEY_USERNAME = "uname"; 
private static String KEY_EMAIL = "email"; 
private static String KEY_CREATED_AT = "created_at"; 
private static String KEY_ERROR = "error"; 

/** 
* Defining layout items. 
**/ 

EditText inputFirstName; 
EditText inputLastName; 
EditText inputUsername; 
EditText inputEmail; 
EditText inputPassword; 
Button btnRegister; 
TextView registerErrorMsg; 

/** 
* Called when the activity is first created. 
*/ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.register); 

    /** 
    * Defining all layout items 
    **/ 
    inputFirstName = (EditText) findViewById(R.id.fname); 
    inputLastName = (EditText) findViewById(R.id.lname); 
    inputUsername = (EditText) findViewById(R.id.uname); 
    inputEmail = (EditText) findViewById(R.id.email); 
    inputPassword = (EditText) findViewById(R.id.pword); 
    btnRegister = (Button) findViewById(R.id.register); 
    registerErrorMsg = (TextView) findViewById(R.id.register_error); 

/** 
* Button which Switches back to the login screen on clicked 
**/ 

    Button login = (Button) findViewById(R.id.bktologin); 
    login.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      Intent myIntent = new Intent(view.getContext(), Login.class); 
      startActivityForResult(myIntent, 0); 
      finish(); 
     } 

    }); 

    /** 
    * Register Button click event. 
    * A Toast is set to alert when the fields are empty. 
    * Another toast is set to alert Username must be 5 characters. 
    **/ 

    btnRegister.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      if ( (!inputUsername.getText().toString().equals("")) && (!inputPassword.getText().toString().equals("")) && (!inputFirstName.getText().toString().equals("")) && (!inputLastName.getText().toString().equals("")) && (!inputEmail.getText().toString().equals(""))) 
      { 
       if (inputUsername.getText().toString().length() > 4){ 
        NetAsync(view); 

       } 
       else 
       { 
        Toast.makeText(getApplicationContext(), 
          "Username should be minimum 5 characters", Toast.LENGTH_SHORT).show(); 
       } 
      } 
      else 
      { 
       Toast.makeText(getApplicationContext(), 
         "One or more fields are empty", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 
} 
/** 
* Async Task to check whether internet connection is working 
**/ 

private class NetCheck extends AsyncTask<String,Void,Boolean> 
{ 
    private ProgressDialog nDialog; 

    @Override 
    protected void onPreExecute(){ 
     super.onPreExecute(); 
     nDialog = new ProgressDialog(Register.this); 
     nDialog.setMessage("Loading.."); 
     nDialog.setTitle("Checking Network"); 
     nDialog.setIndeterminate(false); 
     nDialog.setCancelable(true); 
     nDialog.show(); 
    } 

    @Override 
    protected Boolean doInBackground(String... args){ 

/** 
* Gets current device state and checks for working internet connection by  trying Google. 
**/ 
     ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
     if (netInfo != null && netInfo.isConnected()) { 
      try { 
       URL url = new URL("http://www.google.com"); 
       HttpURLConnection urlc = (HttpURLConnection) url.openConnection(); 
       urlc.setConnectTimeout(3000); 
       urlc.connect(); 
       if (urlc.getResponseCode() == 200) { 
        return true; 
       } 
      } catch (MalformedURLException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
     return false; 

    } 
    @Override 
    protected void onPostExecute(Boolean th){ 

     if(th == true){ 
      nDialog.dismiss(); 
      new ProcessRegister().execute(); 
     } 
     else{ 
      nDialog.dismiss(); 
      registerErrorMsg.setText("Error in Network Connection"); 
     } 
    } 
} 

private class ProcessRegister extends AsyncTask<String,Void,JSONObject> { 

    /** 
    * Defining Process dialog 
    **/ 
    private ProgressDialog pDialog; 

    String email,password,fname,lname,uname; 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     inputUsername = (EditText) findViewById(R.id.uname); 
     inputPassword = (EditText) findViewById(R.id.pword); 
     fname = inputFirstName.getText().toString(); 
     lname = inputLastName.getText().toString(); 
     email = inputEmail.getText().toString(); 
     uname= inputUsername.getText().toString(); 
     password = inputPassword.getText().toString(); 
     pDialog = new ProgressDialog(Register.this); 
     pDialog.setTitle("Contacting Servers"); 
     pDialog.setMessage("Registering ..."); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(true); 
     pDialog.show(); 
    } 

    @Override 
    protected JSONObject doInBackground(String... args) { 

     UserFunctions userFunction = new UserFunctions(); 
     JSONObject json = userFunction.registerUser(fname, lname, email, uname, password); 

     return json; 

    } 
    @Override 
    protected void onPostExecute(JSONObject json) { 
     /** 
     * Checks for success message. 
     **/ 
     try { 
      if (json.getString(KEY_SUCCESS) != null) { 
       registerErrorMsg.setText(""); 
       String res = json.getString(KEY_SUCCESS); 

       String red = json.getString(KEY_ERROR); 

       if(Integer.parseInt(res) == 1){ 
        pDialog.setTitle("Getting Data"); 
        pDialog.setMessage("Loading Info"); 

        registerErrorMsg.setText("Successfully Registered"); 

        DatabaseHandler db = new DatabaseHandler(getApplicationContext()); 
        JSONObject json_user = json.getJSONObject("user"); 

        /** 
        * Removes all the previous data in the SQlite database 
        **/ 

        UserFunctions logout = new UserFunctions(); 
        logout.logoutUser(getApplicationContext()); 
        db.addUser(json_user.getString(KEY_FIRSTNAME),json_user.getString(KEY_LASTNAME),json_user.getString(KEY_EMAIL),json_user.getString(KEY_USERNAME),json_user.getString(KEY_UID),json_user.getString(KEY_CREATED_AT)); 
        /** 
        * Stores registered data in SQlite Database 
        * Launch Registered screen 
        **/ 

        Intent registered = new Intent(getApplicationContext(), Registered.class); 

        /** 
        * Close all views before launching Registered screen 
        **/ 
        registered.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        pDialog.dismiss(); 
        startActivity(registered); 

        finish(); 
       } 

       else if (Integer.parseInt(red) ==2){ 
        pDialog.dismiss(); 
        registerErrorMsg.setText("User already exists"); 
       } 
       else if (Integer.parseInt(red) ==3){ 
        pDialog.dismiss(); 
        registerErrorMsg.setText("Invalid Email id"); 
       } 

      } 

      else{ 
       pDialog.dismiss(); 

       registerErrorMsg.setText("Error occured in registration"); 
      } 

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

     } 
    }} 
public void NetAsync(View view){ 
    new NetCheck().execute(); 
}} 

logcat

04-09 14:42:05.992 3951-3971/learn2crack.com.learn2cracklogin E/Surface:   getSlotFromBufferLocked: unknown buffer: 0xabd2ef80 
04-09 14:42:07.289 3951-3971/learn2crack.com.learn2cracklogin W/EGL_emulation: eglSurfaceAttrib not implemented 
04-09 14:42:07.289 3951-3971/learn2crack.com.learn2cracklogin W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xabe8a180, error=EGL_SUCCESS 
04-09 14:42:09.207 3951-3971/learn2crack.com.learn2cracklogin E/Surface: getSlotFromBufferLocked: unknown buffer: 0xabd2eb90 
04-09 14:42:25.120 3951-3974/learn2crack.com.learn2cracklogin E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1 
                       Process: learn2crack.com.learn2cracklogin, PID: 3951 
                      java.lang.RuntimeException: An error occurred while executing doInBackground() 
                       at android.os.AsyncTask$3.done(AsyncTask.java:309) 
                       at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) 
                       at java.util.concurrent.FutureTask.setException(FutureTask.java:223) 
                       at java.util.concurrent.FutureTask.run(FutureTask.java:242) 
                       at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
                       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
                       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
                       at java.lang.Thread.run(Thread.java:818) 
                      Caused by: java.lang.SecurityException: ConnectivityService: Neither user 10064 nor current process has android.permission.ACCESS_NETWORK_STATE. 
                       at android.os.Parcel.readException(Parcel.java:1599) 
                       at android.os.Parcel.readException(Parcel.java:1552) 
                       at android.net.IConnectivityManager$Stub$Proxy.getActiveNetworkInfo(IConnectivityManager.java:974) 
                       at android.net.ConnectivityManager.getActiveNetworkInfo(ConnectivityManager.java:646) 
                       at learn2crack.com.learn2cracklogin.Register$NetCheck.doInBackground(Register.java:144) 
                       at learn2crack.com.learn2cracklogin.Register$NetCheck.doInBackground(Register.java:122) 
                       at android.os.AsyncTask$2.call(AsyncTask.java:295) 
                       at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
                       at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)  
                       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)  
                       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)  
                       at java.lang.Thread.run(Thread.java:818)  
04-09 14:42:25.250 3951-3971/learn2crack.com.learn2cracklogin W/EGL_emulation: eglSurfaceAttrib not implemented 
04-09 14:42:25.250 3951-3971/learn2crack.com.learn2cracklogin W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xabe8ae20, error=EGL_SUCCESS 
04-09 14:42:27.586 3951-3951/learn2crack.com.learn2cracklogin I/Choreographer: Skipped 138 frames! The application may be doing too much work on its main thread. 
04-09 14:42:28.139 3951-3971/learn2crack.com.learn2cracklogin E/Surface: getSlotFromBufferLocked: unknown buffer: 0xabd30d40 
04-09 14:42:28.148 3951-3971/learn2crack.com.learn2cracklogin D/OpenGLRenderer: endAllStagingAnimators on 0xa33f5c00 (RippleDrawable) with handle 0xa35b1640 
04-09 14:42:28.224 3951-3971/learn2crack.com.learn2cracklogin E/Surface: getSlotFromBufferLocked: unknown buffer: 0xabd322b0 
04-09 14:42:28.989 3951-3951/learn2crack.com.learn2cracklogin E/Surface: queueBuffer: error queuing buffer to SurfaceTexture, -19 
04-09 14:42:28.989 3951-3951/learn2crack.com.learn2cracklogin E/Surface: queueBuffer (handle=0xabd30a30) failed (No such device) 
04-09 14:42:29.002 3951-3951/learn2crack.com.learn2cracklogin E/ViewRootImpl: Could not unlock surface 
                      java.lang.IllegalArgumentException 
                       at android.view.Surface.nativeUnlockCanvasAndPost(Native Method) 
                       at android.view.Surface.unlockSwCanvasAndPost(Surface.java:301) 
                       at android.view.Surface.unlockCanvasAndPost(Surface.java:282) 
                       at android.view.ViewRootImpl.drawSoftware(ViewRootImpl.java:2739) 
                       at android.view.ViewRootImpl.draw(ViewRootImpl.java:2642) 
                       at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2434) 
                       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2067) 
                       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107) 
                       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013) 
                       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) 
                       at android.view.Choreographer.doCallbacks(Choreographer.java:670) 
                       at android.view.Choreographer.doFrame(Choreographer.java:606) 
                       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) 
                       at android.os.Handler.handleCallback(Handler.java:739) 
                       at android.os.Handler.dispatchMessage(Handler.java:95) 
                       at android.os.Looper.loop(Looper.java:148) 
                       at android.app.ActivityThread.main(ActivityThread.java:5417) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
04-09 14:42:29.008 3951-3951/learn2crack.com.learn2cracklogin I/Choreographer: Skipped 46 frames! The application may be doing too much work on its main thread. 
04-09 14:43:00.264 3951-3957/learn2crack.com.learn2cracklogin W/art: Suspending all threads took: 13.774ms 
04-09 14:44:06.189 3951-3957/learn2crack.com.learn2cracklogin W/art: Suspending all threads took: 16.496ms 
04-09 14:47:25.240 3951-3974/learn2crack.com.learn2cracklogin I/Process: Sending signal. PID: 3951 SIG: 9 

Bitte helfen Sie mir bitte

+0

Welchen Fehler gibt es? Veröffentlichen Sie Ihre Logcat-Ausgabe – Pelocho

+0

@ Dr.Pelocho Entschuldigung dafür, ich habe gerade – NuhaAbd

+1

'verursacht durch: java.lang.SecurityException: ConnectivityService: Weder Benutzer 10064 noch aktuellen Prozess hat android.permission.ACCESS_NETWORK_STATE' Jetzt erklären Sie bitte, welcher Teil dieser schönen Fehlermeldung, die Sie nicht verstehen. – csmckelvey

Antwort

0

ich mehr als ein Fehler im Code zu sehen.

  1. Ersetzen Sie diese

<uses-permission android:name="android.permission.INTERNET"> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> </uses-permission>

mit

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
  1. ersetzen Liste mit List<NameValuePair>

  2. Hinzufügen "?" zu Ihren Tags wie "Login?", "registrieren?", ..

+0

Vielen Dank! Wenn ich die List-Anweisung den Android ersetzen Studio über die . – NuhaAbd

+0

Ich implementierte die anderen Änderungen und jetzt sagt es, dass es eine Verbindung mit dem Server .. dann bricht – NuhaAbd

+0

Dies ist in der Logcat: java.lang.NullPointerException: Versuch, virtuelle Methode 'Java aufzurufen .lang.String org.json.JSONObject.getString (java.lang.String) 'für eine Nullobjekt-Referenz – NuhaAbd

Verwandte Themen