2012-10-24 4 views
1

한 활동에서 다른 활동으로 매개 변수를 전달하는 방법은 다른 활동으로 받았습니까? PHP 측에서는 쿼리를 할 것이므로 내 쿼리는 하나의 액티비티에서 전달 된 매개 변수에 따라 달라지며 다른 액티비티는 해당 쿼리의 결과를 보여줍니다. 당신의 도움에 감사드립니다.안드로이드는 PHP에서 매개 변수를 전달하고받습니다.

답변

2

> 매개 변수 android app를 PHP 사이트에 전달하는 법. 1>이 생성 한 JSON 파서 클래스 JSONParser.java

public class JSONParser { 

static InputStream is = null; 
static JSONObject jObj = null; 
static String json = ""; 

// constructor 
public JSONParser() { 

} 

public JSONObject getJSONFromUrl(String url, List<NameValuePair> params) { 

    // Making HTTP request 
    try { 
     // defaultHttpClient 
     DefaultHttpClient httpClient = new DefaultHttpClient();  

     String paramString = URLEncodedUtils.format(params, "utf-8");   
     url += "?" + paramString;   
     HttpGet httpGet = new HttpGet(url);    
     HttpResponse httpResponse = httpClient.execute(httpGet);    
     HttpEntity httpEntity = httpResponse.getEntity(); 
     is = httpEntity.getContent(); 

    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    try { 
     BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
      sb.append(line + "\n"); 
     } 
     is.close(); 
     json = sb.toString(); 

    } catch (Exception e) { 
     Log.e("Buffer Error", "Error converting result " + e.toString()); 
    } 

    // try parse the string to a JSON object 
    try { 
     jObj = new JSONObject(json);    
    } catch (JSONException e) { 
     Log.e("JSON Parser", "Error parsing data " + e.toString()); 
    } 

    // return JSON String 
    return jObj; 

} 

} 2>의 PHP UserFunctions.java 전달 또는 수신 파라미터에 대한 하나 개의 사용자 기능 클래스를 생성한다. PHP 사이트에서 데이터 가져 오기 위해이 클래스 하나의 기능과 또 다른 패스에 대한 안드로이드 응용 프로그램에서 PHP로

public class UserFunctions { 

private JSONParser jsonParser; 

private static String api_URL = "http://10.0.2.2/carcab_api/"; 

private static String login_tag = "log_in"; 
private static String get_user_detail_tag = "userdetail"; 




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

/** 
* function make Login Request 
* 
* @param email 
* @param password 
* */ 
public JSONObject loginUser(String usr_nm, String password) { 
    // Building Parameters 
    List<NameValuePair> params = new ArrayList<NameValuePair>(); 
    params.add(new BasicNameValuePair("tag", login_tag)); 
    params.add(new BasicNameValuePair("usr_nm", usr_nm)); 
    params.add(new BasicNameValuePair("password", password)); 
    JSONObject json = jsonParser.getJSONFromUrl(api_URL, params); 
    // Log.e("JSON", json.toString()); 
    return json; 
} 

/** 
* function make get User Detail Request 
* 
* @param email 
* @param password 
* */ 

public JSONObject get_user_detail(String user_id) { 
    List<NameValuePair> params = new ArrayList<NameValuePair>(); 
    params.add(new BasicNameValuePair("tag", get_user_detail_tag)); 
    params.add(new BasicNameValuePair("user_id", user_id)); 
    JSONObject json1 = jsonParser.getJSONFromUrl(api_URL, params); 
    System.out.println(params); 
    Log.e("JSON1", json1.toString()); 
    return json1; 

} 

}

3 > 내가 로그인 버튼의 클릭에 PHP로 안드로이드에서 매개 변수를 전달입니다. loginActivity.java

public class LoginActivity extends Activity { 
Button btnLogin; 
EditText inputu_nm; 
EditText inputPassword; 
TextView loginErrorMsg; 
UserFunctions userFunction; 
JSONObject json; 


// JSON Response node names 
private static String KEY_SUCCESS = "success"; 
private static String KEY_UID = "user_id"; 
private static String KEY_NAME = "user_name"; 
private static String KEY_UNM = "user_nm"; 
private static String KEY_OID = "off_id"; 
private ProgressDialog progressDialog; 

private static String KEY_CREATED_AT = "created_at"; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.login); 

    // Importing all assets like buttons, text fields 
    inputu_nm = (EditText) findViewById(R.id.u_nm); 
    inputPassword = (EditText) findViewById(R.id.pass);  
    btnLogin = (Button) findViewById(R.id.btnlogin); 
    loginErrorMsg = (TextView) findViewById(R.id.login_error); 
    // Login button Click Event 
    btnLogin.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View view) { 

      String u_nm = inputu_nm.getText().toString(); 
      String password = inputPassword.getText().toString(); 
      UserFunctions userFunction = new UserFunctions();    
      //pass user username and password to android app to php 
      JSONObject json = userFunction.loginUser(u_nm, password); 

      // if json responce is success then user go to next home activity 
      try { 
       if (json.getString(KEY_SUCCESS) != null) { 
        loginErrorMsg.setText(""); 
        String res = json.getString(KEY_SUCCESS); 
        if (Integer.parseInt(res) == 1) { 
          Intent dashboard = new Intent(getApplicationContext(), HomeActivity.class);    
          startActivity(dashboard); 

        } else { 
         // Error in login 
         loginErrorMsg.setText("Incorrect Username Or Password"); 
         inputu_nm.setText("");       
         inputPassword.setText(""); 
        } 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 

} 

}

4> 이제 다음 user.userdetail.java의 모든 세부 사항을 얻을 다른 activity.when 사용자 세부 활동 출시에 PHP에서 사용자 세부 사항을 얻을입니다

public class userdetailActivity extends Activity { 

// JSON Response node names 
private static String KEY_SUCCESS = "success"; 
private static String KEY_ERROR = "error"; 
private static String KEY_ERROR_MSG = "error_msg"; 
private static String KEY_SUCCESS_MSG = "success_msg"; 

JSONObject json_user; 
UserFunctions userFunctions; 
DatabaseHandler DBHandler; 
String user_name = ""; 
String user_password = ""; 
String user_address = ""; 
String user_mobile = ""; 
String user_id; 
TextView username, password, address, mobile; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.userdetail); 
    userFunctions = new UserFunctions(); 
    username = (TextView) findViewById(R.id.username); 
    password = (TextView) findViewById(R.id.password); 
    address = (TextView) findViewById(R.id.address); 
    mobile = (TextView) findViewById(R.id.mobile); 
    // i am pass static value of user id now 
    user_id = "1001"; 

    // i am pass user id and get user detail on my activity from php 
    refresh_screen(user_id); 

} 

private void refresh_screen(String user_id) { 
    JSONObject json = userFunctions.get_user_detail(user_id); 
    jsonact = json; 
    // check for positive response 
    try { 
     if (json.getString(KEY_SUCCESS) != null) { 
      String res = json.getString(KEY_SUCCESS); 
      if (Integer.parseInt(res) == 1) { 
       json_user = json.getJSONObject("user"); 

       user_name = json_user.getString("username"); 
       user_password = json_user.getString("password"); 
       user_address = json_user.getString("address"); 
       user_mobile = json_user.getString("mobile"); 

       username.setText(user_name); 
       password.setText(user_password); 
       address.setText(user_address); 
       mobile.setText(user_mobile); 

      } else if (Integer.parseInt(res) == 0) { 
       Toast.makeText(getApplicationContext(), "No detail Found", 
         Toast.LENGTH_LONG).show(); 
      } 
     } else if (json.getString(KEY_ERROR) != null) { 

      String res = json.getString(KEY_ERROR); 
      if (Integer.parseInt(res) == 1) { 
       Toast.makeText(getApplicationContext(), "No detail Found", 
         Toast.LENGTH_LONG).show(); 
      } 

     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
     Toast.makeText(getApplicationContext(), "No detail Found", 
       Toast.LENGTH_LONG).show(); 

    } 
} 

}