android - 如何在我登录 Activity 后开始 Activity

标签 android web-services android-intent httpclient

在我的登录 Activity 中...我询问用户名和密码..我想检查用户是否是授权用户..如果用户获得授权然后我的网络 Activity menu.java 启动..否则他应该被重定向到相同的登录页面...警告...该用户不存在...该怎么做??

我已经写好了我的 Activity ..我怎样才能开始下一个 Activity ??

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button; 
import android.widget.EditText;
import android.widget.TextView;

public class Login_Menu extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login_lay);
    final TextView tv=(TextView) findViewById(R.id.login_stat_tv);
    final EditText uname=(EditText)findViewById(R.id.uname);
    final EditText pass=(EditText)findViewById(R.id.pass);
    Button login=(Button)findViewById(R.id.login_but);
    Button cancel=(Button)findViewById(R.id.cancel_but);

    final HttpClient client = new DefaultHttpClient();
    String url="http://10.0.2.2:7001/f/json.jsp";
    final HttpPost post = new HttpPost(url);


    login.setOnClickListener(new View.OnClickListener() {


        public void onClick(View arg0) {

        try{

            List<NameValuePair> pairs = new ArrayList<NameValuePair>();   
            pairs.add(new BasicNameValuePair("username",uname.getText().toString()));   
            pairs.add(new BasicNameValuePair("password",pass.getText().toString()));   
            post.setEntity(new UrlEncodedFormEntity(pairs));   
            HttpResponse response = client.execute(post);


            BufferedReader rd = new BufferedReader(new InputStreamReader(
                    response.getEntity().getContent()));
            String line = null;

            while ((line = rd.readLine()) != null) {

                tv.append(line);

            }



            //startActivity(new Intent("com.campuspro.start.DEMO_RETRV"));

          }

        catch(Exception e)
        {
            e.printStackTrace();   

        }


        }
    });

    cancel.setOnClickListener(new View.OnClickListener() {

        public void onClick(View arg0) {

            uname.getText().clear();
            pass.getText().clear();


        }
    });



}



}

最佳答案

在这里使用Aysntask

doInBackground() 中执行操作并在 onPostExecute() 中给出结果

public class Login_Menu extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login_lay);
    final TextView tv=(TextView) findViewById(R.id.login_stat_tv);
    final EditText uname=(EditText)findViewById(R.id.uname);
    final EditText pass=(EditText)findViewById(R.id.pass);
    Button login=(Button)findViewById(R.id.login_but);
    Button cancel=(Button)findViewById(R.id.cancel_but);

    final HttpClient client = new DefaultHttpClient();
    String url="http://10.0.2.2:7001/f/json.jsp";
    final HttpPost post = new HttpPost(url);
    new login().execute("");
 }


private class login extends AsyncTask<String, Void, Void>{
    ProgressDialog dialog = ProgressDialog.show(activity.this, "", "Loading, Please wait...");

    @Override
    protected int doInBackground(String... params) {
        // TODO Auto-generated method stub
        Log.i("thread", "Doing Something...");
       //authentication operation
try{

        List<NameValuePair> pairs = new ArrayList<NameValuePair>();   
        pairs.add(new BasicNameValuePair("username",uname.getText().toString()));   
        pairs.add(new BasicNameValuePair("password",pass.getText().toString()));   
        post.setEntity(new UrlEncodedFormEntity(pairs));   
        HttpResponse response = client.execute(post);

        BufferedReader rd = new BufferedReader(new InputStreamReader(
                response.getEntity().getContent()));
        String line = null;

        while ((line = rd.readLine()) != null) {

            tv.append(line);

        }
        //startActivity(new Intent("com.campuspro.start.DEMO_RETRV"));
      }

    catch(Exception e)
    {
        e.printStackTrace();   

    }

        return val;
    }

    protected void onPreExecute(){
        //dialog.dismiss();
        Log.i("thread", "Started...");
        dialog.show();
    }
    protected void onPostExecute(int result){
        Log.i("thread", "Done...");
        if(dialog!=null)
        dialog.dismiss();
        if(result){
            toast.setText("No User Found, please try again!");
            toast.show();
        }else{
        Intent myIntent = new Intent(ctx, main.class);
        myIntent.putExtra("user", user);
        startActivity(myIntent);
        }
    }

}

关于android - 如何在我登录 Activity 后开始 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10039683/

相关文章:

Android程序在旋转后不附加字符串

android - "sendTextMessage"有些杀毒软件会判断为病毒,如何正确使用?

.net - 没有端点监听 net.pipe ://localhost/

.net - 用于测试 Web 服务的工具

android - 在 Android 相机 Intent 上按后退按钮时应用程序崩溃

Android - 当设备屏幕为空白时不接收 Wi-Fi 连接更改 Intent

android - 动态注册时未调用 BroadcastReceiver onReceive()

android - Intent 打开谷歌身份验证器

android - 如何正确指定 CMakeLists 文件

asp.net - 通过 jQuery 调用 ASP.NET 服务器端方法