不幸的是,应用程序停止工作 [英] Unfortunately the application stopped working

查看:242
本文介绍了不幸的是,应用程序停止工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在android系统development.I初学者一直在寻找一个星期了。其次是中所有的教程字。每当我开始了我的Andr​​oid模拟器它首先表明ProcessSystem没有响应。等待还是退出?第二个应用程序加载,但只要我点击注册或者填写表格后登录按钮,显示进度对话框,不幸的是,应用程序已停止工作的几秒钟后显示,它退出。
我Login.java文件是

 公共类扩展登录活动实现OnClickListener {    私人用户的EditText,通过;
    私人按钮mSubmit,mRegister;     //进度对话框
    私人ProgressDialog pDialog;    // JSON解析器类
    JSONParser jsonParser =新JSONParser();
    私有静态最后弦乐LOGIN_URL =HTTP://localhost/webservice/login.php
    //从PHP脚本repsonse JSON元素ID:
    私有静态最后弦乐TAG_SUCCESS =成功;
    私有静态最后弦乐TAG_MESSAGE =消息;    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        // TODO自动生成方法存根
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.login);        //设置输入字段
        用户=(EditText上)findViewById(R.id.username);
        通=(EditText上)findViewById(R.id.password);
        //设置按钮
        mSubmit =(按钮)findViewById(R.id.login);
        mRegister =(按钮)findViewById(R.id.register);
        //注册监听器
        mSubmit.setOnClickListener(本);
        mRegister.setOnClickListener(本);    }    @覆盖
    公共无效的onClick(视图v){
        // TODO自动生成方法存根
        开关(v.getId()){
        案例R.id.login:
                新AttemptLogin()执行();
            打破;
        案例R.id.register:
                意图I =新意图(这一点,Register.class);
                startActivity(ⅰ);
            打破;
        默认:
            打破;
        }
    }    类AttemptLogin扩展的AsyncTask<字符串,字符串,字符串> {
        布尔失败= F​​ALSE;        @覆盖
        在preExecute保护无效(){
            super.on preExecute();
            pDialog =新ProgressDialog(Login.this);
            pDialog.setMessage(试图登录...);
            pDialog.setIndeterminate(假);
            pDialog.setCancelable(真);
            pDialog.show();
        }        @覆盖
        保护字符串doInBackground(字符串参数... args){
            // TODO自动生成方法存根
             //检查成功标记
            诠释成功;
            字符串username = user.getText()的toString()。
            字符串密码= pass.getText()的toString()。
            尝试{
                //大厦参数
                清单<&的NameValuePair GT; PARAMS =新的ArrayList<&的NameValuePair GT;();
                params.add(新BasicNameValuePair(用户名的用户名));
                params.add(新BasicNameValuePair(密码,密码));
                Log.d(!要求,出发);
                //通过HTTP请求获得产品的详细信息
                JSONObject的JSON = jsonParser.makeHtt prequest(LOGIN_URL,POST,则params);
                //检查你的日志,JSON响应
                Log.d(登录尝试,json.toString());
                // JSON的成功标签
                成功= json.getInt(TAG_SUCCESS);
                如果(成功== 1){
                    Log.d(登录成功!,json.toString());
                    意图I =新意图(Login.this,Display.class);
                    完();
                    startActivity(ⅰ);
                    返回json.getString(TAG_MESSAGE);
                }其他{
                    Log.d(登录失败!,json.getString(TAG_MESSAGE));
                    返回json.getString(TAG_MESSAGE);
                }
            }赶上(JSONException E){
                e.printStackTrace();
            }
                返回null;
        }        保护无效onPostExecute(字符串FILE_URL){
            //关闭该对话框一旦产品被删除
            pDialog.dismiss();
            如果(FILE_URL!= NULL){                Toast.makeText(Login.this,FILE_URL,Toast.LENGTH_LONG).show();
            }
        }
    }
}

和我Register.java是

 公共类注册扩展活动实现OnClickListener {    私人用户的EditText,通过;
    私人按钮mRegister;     //进度对话框
    私人ProgressDialog pDialog;
    // JSON解析器类
    JSONParser jsonParser =新JSONParser();    // PHP登录脚本
    私有静态最后弦乐LOGIN_URL =HTTP://localhost/webservice/register.php    私有静态最后弦乐TAG_SUCCESS =成功;
    私有静态最后弦乐TAG_MESSAGE =消息;    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        // TODO自动生成方法存根
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.register);
        用户=(EditText上)findViewById(R.id.username);
        通=(EditText上)findViewById(R.id.password);
        mRegister =(按钮)findViewById(R.id.register);
        mRegister.setOnClickListener(本);    }    @覆盖
    公共无效的onClick(视图v){
        // TODO自动生成方法存根                新CREATEUSER()执行();
    }    类CREATEUSER扩展的AsyncTask<字符串,字符串,字符串> {        布尔失败= F​​ALSE;        @覆盖
        在preExecute保护无效(){
            super.on preExecute();
            pDialog =新ProgressDialog(Register.this);
            pDialog.setMessage(创建用户...);
            pDialog.setIndeterminate(假);
            pDialog.setCancelable(真);
            pDialog.show();
        }        @覆盖
        保护字符串doInBackground(字符串参数... args){
            // TODO自动生成方法存根
             //检查成功标记
            诠释成功;
            字符串username = user.getText()的toString()。
            字符串密码= pass.getText()的toString()。
            尝试{
                //大厦参数
                清单<&的NameValuePair GT; PARAMS =新的ArrayList<&的NameValuePair GT;();
                params.add(新BasicNameValuePair(用户名的用户名));
                params.add(新BasicNameValuePair(密码,密码));
                Log.d(!要求,出发);
                //发布的用户数据脚本
                JSONObject的JSON = jsonParser.makeHtt prequest(
                       LOGIN_URL,POST,则params);
                //全JSON响应
                Log.d(登录尝试,json.toString());
                // JSON的成功要素
                成功= json.getInt(TAG_SUCCESS);
                如果(成功== 1){
                    Log.d(用户创建!,json.toString());
                    完();
                    返回json.getString(TAG_MESSAGE);
                }其他{
                    Log.d(登录失败!,json.getString(TAG_MESSAGE));
                    返回json.getString(TAG_MESSAGE);
                }
            }赶上(JSONException E){
                e.printStackTrace();
            }
            返回null;        }        保护无效onPostExecute(字符串FILE_URL){            pDialog.dismiss();
            如果(FILE_URL!= NULL){
                Toast.makeText(Register.this,FILE_URL,Toast.LENGTH_LONG).show();
            }
        }
    }
}

在JSONParser.java文件是

 公共类JSONParser {
    静态InputStream为= NULL;
    静态的JSONObject jObj = NULL;
    静态JSON字符串=;
    //构造
    公共JSONParser(){
    }
    公众的JSONObject getJSONFromUrl(最终字符串URL){
        //使HTTP请求
        尝试{
           //构建客户端和HTTP请求。
            DefaultHttpClient的HttpClient =新DefaultHttpClient();
            HttpPost httpPost =新HttpPost(URL);
            //执行POST请求,并在本地存储的响应。
            HTT presponse HTT presponse = httpClient.execute(httpPost);
            //从响应中提取数据。
            HttpEntity httpEntity = HTT presponse.getEntity();
            //打开与数据内容的InputStream。
            是= httpEntity.getContent();
        }赶上(UnsupportedEncodingException五){
            e.printStackTrace();
        }赶上(ClientProtocolException E){
            e.printStackTrace();
        }赶上(IOException异常五){
            e.printStackTrace();
        }
        尝试{
            //创建一个BufferedReader通过InputStream的解析。
            读者的BufferedReader =新的BufferedReader(新的InputStreamReader(
                    是,ISO-8859-1),8);
            //声明一个字符串生成器,以帮助解析。
            StringBuilder的SB =新的StringBuilder();
            //声明一个字符串JSON对象数据存储在字符串形式。
            串线= NULL;
            //生成字符串,直到空。
            而((行= reader.readLine())!= NULL){
                sb.append(行+\\ n);
            }
            //关闭输入流。
            is.close();
            //字符串生成器的数据转换为实际的字符串。
            JSON = sb.toString();
        }赶上(例外五){
            Log.e(缓冲区错误,错误转换结果+ e.toString());
        }
        //尝试将字符串解析到一个JSON对象
        尝试{
           jObj =新的JSONObject(JSON);
        }赶上(JSONException E){
            Log.e(JSON解析器,错误分析数据+ e.toString());
        }
        //返回JSON对象。
        返回jObj;
    }
    //函数得到JSON的网址
    //通过HTTP POST或GET mehtod
    公众的JSONObject makeHtt prequest(URL字符串,字符串的方法,
            清单<&的NameValuePair GT; PARAMS){
        //使HTTP请求
        尝试{
            //检查请求的方法
            如果(方法==POST){
                //请求方法是POST
                // defaultHttpClient
                DefaultHttpClient的HttpClient =新DefaultHttpClient();
                HttpPost httpPost =新HttpPost(URL);
                httpPost.setEntity(新UrlEn codedFormEntity(PARAMS));
                HTT presponse HTT presponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = HTT presponse.getEntity();
                是= httpEntity.getContent();
        }否则如果(方法==GET){
                //请求方法是GET
                DefaultHttpClient的HttpClient =新DefaultHttpClient();
                字符串中的paramString = URLEn codedUtils.format(参数,可以UTF-8);
                网址+ =? +中的paramString;
                HTTPGET HTTPGET =新HTTPGET(URL);
                HTT presponse HTT presponse = httpClient.execute(HTTPGET);
                HttpEntity httpEntity = HTT presponse.getEntity();
                是= httpEntity.getContent();
            }
        }赶上(UnsupportedEncodingException五){
            e.printStackTrace();
        }赶上(ClientProtocolException E){
            e.printStackTrace();
        }赶上(IOException异常五){
            e.printStackTrace();
        }
        尝试{
            读者的BufferedReader =新的BufferedReader(新的InputStreamReader(
                    是,ISO-8859-1),8);
            StringBuilder的SB =新的StringBuilder();
            串线= NULL;
            而((行= reader.readLine())!= NULL){
                sb.append(行+\\ n);
            }
            is.close();
            JSON = sb.toString();
        }赶上(例外五){
            Log.e(缓冲区错误,错误转换结果+ e.toString());
        }
        //尝试分析字符串到一个JSON对象
        尝试{
            jObj =新的JSONObject(JSON);
        }赶上(JSONException E){
            Log.e(JSON解析器,错误分析数据+ e.toString());
        }
        //返回JSON字符串
        返回jObj;    }
}

在logcat的是:

 六月五日至13日:57:20.120:D / gralloc_goldfish(1219):无仿真模拟GPU检测。
6月5日至十三日:57:25.540:I /编舞(1219):跳过282帧!该应用程序可能会做它的主线程的工作太多了。
6月5日至十三日:57:41.450:D / dalvikvm(1219):GC_FOR_ALLOC释放138K,6%免费3395K / 3604K,暂停38ms,总持续时间43ms
6月5日至十三日:57:41.590:D / dalvikvm(1219):GC_FOR_ALLOC释放35K,6%免费3496K / 3684K,暂停34ms,40ms的总
6月5日至十三日:57:41.590:I / dalvikvm堆(1219):成长堆(frag的情况下),以4.085MB为635812字节分配
6月5日至十三日:57:42.280!:D /请求(1219):首发
6月5日至十三日:57:42.600:I /编舞(1219):跳过100帧!该应用程序可能会做它的主线程的工作太多了。
6月5日至十三日:57:42.770:I /编舞(1219):...和8个
6月5日至十三日:58:08.680:W / System.err的(1219)的java.net.UnknownHostException:无法解析主机HTTP:没有与主机名关联的地址
6月5日至十三日:58:08.800:I /编舞(1219):37跳过帧!该应用程序可能会做它的主线程的工作太多了。
6月5日至十三日:58:08.880:W / System.err的(1219):在java.net.InetAddress.lookupHostByName(InetAddress.java:424)
6月5日至十三日:58:08.880:W / System.err的(1219):在java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
6月5日至十三日:58:08.880:W / System.err的(1219):在java.net.InetAddress.getAllByName(InetAddress.java:214)
6月5日至十三日:58:08.970:W / System.err的(1219):在org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
6月5日至十三日:58:08.970:W / System.err的(1219):在org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
6月5日至十三日:58:08.970:W / System.err的(1219):在org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
6月5日至十三日:58:09.720:W / System.err的(1219):在org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
6月5日至十三日:58:09.720:W / System.err的(1219):在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
6月5日至十三日:58:09.720:W / System.err的(1219):在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
6月5日至十三日:58:09.740:W / System.err的(1219):在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
6月5日至十三日:58:09.740:W / System.err的(1219):在com.example.mysqltest.JSONParser.makeHtt prequest(JSONParser.java:89)
6月5日至十三日:58:09.740:W / System.err的(1219):在com.example.mysqltest.Register $ CreateUser.doInBackground(Register.java:94)
6月5日至十三日:58:10.220:W / System.err的(1219):在com.example.mysqltest.Register $ CreateUser.doInBackground(Register.java:1)
6月5日至十三日:58:10.470:W / System.err的(1219):在android.os.AsyncTask $ 2.call(AsyncTask.java:288)
6月5日至十三日:58:10.470:W / System.err的(1219):在java.util.concurrent.FutureTask.run(FutureTask.java:237)
6月5日至十三日:58:10.530:W / System.err的(1219):在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:231)
6月5日至十三日:58:10.530:W / System.err的(1219):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
6月5日至十三日:58:10.540:W / System.err的(1219):在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:587)
6月5日至十三日:58:10.540:W / System.err的(1219):在java.lang.Thread.run(Thread.java:841)
6月5日至十三日:58:10.540:W / System.err的(1219):libcore.io.GaiException:产生的原因的getaddrinfo失败:EAI_NODATA(不与主机名关联的地址)
6月5日至十三日:58:10.610:I /编舞(1219):47跳过帧!该应用程序可能会做它的主线程的工作太多了。
6月5日至十三日:58:11.070:W / System.err的(1219):在libcore.io.Posix.getaddrinfo(本机方法)
6月5日至十三日:58:11.070:W / System.err的(1219):在libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:61)
6月5日至十三日:58:11.070:W / System.err的(1219):在java.net.InetAddress.lookupHostByName(InetAddress.java:405)
6月5日至十三日:58:11.080:W / System.err的(1219):18 ...更多
6月5日至十三日:58:11.080:E /缓存器的错误(1219):错误转换结果显示java.lang.NullPointerException:锁== NULL
6月5日至十三日:58:11.180:E / JSON解析器(1219):错误分析数据org.json.JSONException:在字符输入0结束
6月5日至十三日:58:11.180:W / dalvikvm(1219):主题ID = 11:螺纹未捕获的异常(组= 0xb3af1ba8)退出
6月5日至十三日:58:11.420:E / AndroidRuntime(1219):致命异常:AsyncTask的#1
6月5日至十三日:58:11.420:E / AndroidRuntime(1219):工艺:com.example.mysqltest,PID:1219
6月5日至十三日:58:11.420:E / AndroidRuntime(1219):了java.lang.RuntimeException:执行doInBackground发生错误()
6月5日至十三日:58:11.420:E / AndroidRuntime(1219):在android.os.AsyncTask $ 3.done(AsyncTask.java:300)
6月5日至十三日:58:11.420:E / AndroidRuntime(1219):在java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
6月5日至十三日:58:11.420:E / AndroidRuntime(1219):在java.util.concurrent.FutureTask.setException(FutureTask.java:222)
6月5日至十三日:58:11.420:E / AndroidRuntime(1219):在java.util.concurrent.FutureTask.run(FutureTask.java:242)
6月5日至十三日:58:11.420:E / AndroidRuntime(1219):在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:231)
6月5日至十三日:58:11.420:E / AndroidRuntime(1219):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
6月5日至十三日:58:11.420:E / AndroidRuntime(1219):在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:587)
6月5日至十三日:58:11.420:E / AndroidRuntime(1219):在java.lang.Thread.run(Thread.java:841)
6月5日至十三日:58:11.420:E / AndroidRuntime(1219):因:显示java.lang.NullPointerException
6月5日至十三日:58:11.420:E / AndroidRuntime(1219):在com.example.mysqltest.Register $ CreateUser.doInBackground(Register.java:97)
6月5日至十三日:58:11.420:E / AndroidRuntime(1219):在com.example.mysqltest.Register $ CreateUser.doInBackground(Register.java:1)
6月5日至十三日:58:11.420:E / AndroidRuntime(1219):在android.os.AsyncTask $ 2.call(AsyncTask.java:288)
6月5日至十三日:58:11.420:E / AndroidRuntime(1219):在java.util.concurrent.FutureTask.run(FutureTask.java:237)
6月5日至十三日:58:11.420:E / AndroidRuntime(1219):... 4个
6月5日至十三日:58:15.100:E /窗口管理器(1219):android.view.WindowLeaked:活动com.example.mysqltest.Register渗漏窗口com.android.internal.policy.impl.PhoneWindow $ {DecorView VE b3e3c660。 ... - [R ..... ID 0,0-456,144},最初这里加入
6月5日至十三日:58:15.100:E /窗口管理器(1219):在android.view.ViewRootImpl<&初始化GT;(ViewRootImpl.java:348)
6月5日至十三日:58:15.100:E /窗口管理器(1219):在android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:248)
6月5日至十三日:58:15.100:E /窗口管理器(1219):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
6月5日至十三日:58:15.100:E /窗口管理器(1219):在android.app.Dialog.show(Dialog.java:286)
6月5日至十三日:58:15.100:E /窗口管理器(1219):在com.example.mysqltest.Register $ CreateUser.on preExecute(Register.java:77)
6月5日至十三日:58:15.100:E /窗口管理器(1219):在android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587)
6月5日至十三日:58:15.100:E /窗口管理器(1219):在android.os.AsyncTask.execute(AsyncTask.java:535)
6月5日至十三日:58:15.100:E /窗口管理器(1219):在com.example.mysqltest.Register.onClick(Register.java:61)
6月5日至十三日:58:15.100:E /窗口管理器(1219):在android.view.View.performClick(View.java:4438)
6月5日至十三日:58:15.100:E /窗口管理器(1219):在android.view.View $ PerformClick.run(View.java:18422)
6月5日至十三日:58:15.100:E /窗口管理器(1219):在android.os.Handler.handleCallback(Handler.java:733)
6月5日至十三日:58:15.100:E /窗口管理器(1219):在android.os.Handler.dispatchMessage(Handler.java:95)
6月5日至十三日:58:15.100:E /窗口管理器(1219):在android.os.Looper.loop(Looper.java:136)
6月5日至十三日:58:15.100:E /窗口管理器(1219):在android.app.ActivityThread.main(ActivityThread.java:5017)
6月5日至十三日:58:15.100:E /窗口管理器(1219):在java.lang.reflect.Method.invokeNative(本机方法)
6月5日至十三日:58:15.100:E /窗口管理器(1219):在java.lang.reflect.Method.invoke(Method.java:515)
6月5日至十三日:58:15.100:E /窗口管理器(1219):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:779)
6月5日至十三日:58:15.100:E /窗口管理器(1219):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
6月5日至十三日:58:15.100:E /窗口管理器(1219):在dalvik.system.NativeStart.main(本机方法)

修改
之后收到的所有问题的答案。我做了==来equals()和改变了URL地址10.0.2.2/webservices并已增加了网络权限,但仍然没有成功。它仍然退出,并显示连接被拒绝。请帮我这个。现在我logcat的文件是:

  7月5日至14日:09:16.291 895-1191 / com.example.mysqltest.app W / System.err的:org.apache.http.conn.HttpHostConnectException:连接到http ://10.0.2.2拒绝
七月5日至14日:09:16.501 895-1191 / com.example.mysqltest.app W / System.err的:在org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183)
七月5日至14日:09:16.501 895-1191 / com.example.mysqltest.app W / System.err的:在org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
七月5日至14日:09:16.501 895-1191 / com.example.mysqltest.app W / System.err的:在org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
七月5日至14日:09:16.501 895-1191 / com.example.mysqltest.app W / System.err的:在org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
七月5日至14日:09:16.501 895-1191 / com.example.mysqltest.app W / System.err的:在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
七月5日至14日:09:16.501 895-1191 / com.example.mysqltest.app W / System.err的:在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
七月5日至14日:09:16.501 895-1191 / com.example.mysqltest.app W / System.err的:在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
七月5日至14日:09:16.501 895-1191 / com.example.mysqltest.app W / System.err的:在com.example.mysqltest.app.JSONParser.makeHtt prequest(JSONParser.java:90)
七月5日至14日:09:16.501 895-1191 / com.example.mysqltest.app W / System.err的:在com.example.mysqltest.app.Register $ CreateUser.doInBackground(Register.java:94)
七月5日至14日:09:16.511 895-1191 / com.example.mysqltest.app W / System.err的:在com.example.mysqltest.app.Register $ CreateUser.doInBackground(Register.java:64)
七月5日至14日:09:16.511 895-1191 / com.example.mysqltest.app W / System.err的:在android.os.AsyncTask $ 2.call(AsyncTask.java:288)
七月5日至14日:09:16.561 895-1191 / com.example.mysqltest.app W / System.err的:在java.util.concurrent.FutureTask.run(FutureTask.java:237)
七月5日至14日:09:16.561 895-1191 / com.example.mysqltest.app W / System.err的:在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:231)
七月5日至14日:09:16.571 895-1191 / com.example.mysqltest.app W / System.err的:在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
七月5日至14日:09:16.571 895-1191 / com.example.mysqltest.app W / System.err的:在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:587)
七月5日至14日:09:16.571 895-1191 / com.example.mysqltest.app W / System.err的:在java.lang.Thread.run(Thread.java:841)
七月5日至14日:09:16.571 895-1191 / com.example.mysqltest.app W / System.err的:java.net.ConnectException:产生的原因插座失败:EACCES(权限被拒绝)
七月5日至14日:09:17.191 895-1191 / com.example.mysqltest.app W / System.err的:在org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:181)
七月5日至14日:09:17.281 895-1191 / com.example.mysqltest.app W / System.err的:... 15个
七月5日至14日:09:17.441 895-1191 / com.example.mysqltest.app W / System.err的:java.net.SocketException异常:产生的原因插座失败:EACCES(权限被拒绝)
七月5日至14日:09:17.671 895-1191 / com.example.mysqltest.app W / System.err的:在libcore.io.IoBridge.socket(IoBridge.java:576)
七月5日至14日:09:18.601 895-1191 / com.example.mysqltest.app W / System.err的:libcore.io.ErrnoException:产生的原因插座失败:EACCES(权限被拒绝)
七月5日至14日:09:19.031 895-1191 / com.example.mysqltest.app W / System.err的:在libcore.io.Posix.socket(本机方法)
七月5日至14日:09:19.031 895-1191 / com.example.mysqltest.app W / System.err的:在libcore.io.BlockGuardOs.socket(BlockGuardOs.java:181)
七月5日至14日:09:19.131 895-1191 / com.example.mysqltest.app W / System.err的:在libcore.io.IoBridge.socket(IoBridge.java:561)
七月5日至14日:09:19.131 895-1191 / com.example.mysqltest.app W / System.err的:... 20多
七月5日至14日:09:19.141 895-1191 / com.example.mysqltest.app E /缓存器的错误:错误转换结果显示java.lang.NullPointerException:锁== NULL
七月5日至14日:09:19.141 895-1191 / com.example.mysqltest.app E / JSON解析器:错误解析数据org.json.JSONException:在字符输入0结束
七月5日至14日:09:19.221 895-1191 / com.example.mysqltest.app W / dalvikvm:主题ID = 12:螺纹未捕获的异常退出(组= 0xb4afeba8)
七月5日至14日:09:19.271 895-1191 / com.example.mysqltest.app E / AndroidRuntime:致命的异常:AsyncTask的#2
    工艺:com.example.mysqltest.app,PID:895
    了java.lang.RuntimeException:执行doInBackground发生错误()
            在android.os.AsyncTask $ 3.done(AsyncTask.java:300)
            在java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
            在java.util.concurrent.FutureTask.setException(FutureTask.java:222)
            在java.util.concurrent.FutureTask.run(FutureTask.java:242)
            在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:231)
            在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
            在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:587)
            在java.lang.Thread.run(Thread.java:841)
     显示java.lang.NullPointerException:产生的原因
            在com.example.mysqltest.app.Register $ CreateUser.doInBackground(Register.java:97)
            在com.example.mysqltest.app.Register $ CreateUser.doInBackground(Register.java:64)
            在android.os.AsyncTask $ 2.call(AsyncTask.java:288)
            在java.util.concurrent.FutureTask.run(FutureTask.java:237)
在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:231)
在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:587)
在java.lang.Thread.run(Thread.java:841)
七月5日至14日:09:26.021 895-895 / com.example.mysqltest.app E /窗口管理器:android.view.WindowLeaked:活动com.example.mysqltest.app.Register已泄漏窗口com.android.internal.policy。 impl.PhoneWindow $ {DecorView VE b4e28230 .... - [R ..... ID 0,0-563,96},最初这里加入
            在android.view.ViewRootImpl<&初始化GT;(ViewRootImpl.java:348)
            在android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:248)
            在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
            在android.app.Dialog.show(Dialog.java:286)
            在com.example.mysqltest.app.Register $ CreateUser.on preExecute(Register.java:77)
            在android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587)
            在android.os.AsyncTask.execute(AsyncTask.java:535)
            在com.example.mysqltest.app.Register.onClick(Register.java:61)
            在android.view.View.performClick(View.java:4438)


解决方案

由于Apoorv说,你需要有权限访问任何网络。

 <使用许可权的android:NAME =android.permission.INTERNET对/>

如果将上述你的清单不解决它(或者你已经有这个权限),可能的问题是你的地址...

 私有静态最后弦乐LOGIN_URL =HTTP://localhost/webservice/login.php
私有静态最后弦乐LOGIN_URL =HTTP://localhost/webservice/register.php

我假设你的PHP服务器在同一台计算机模拟器上运行(而不是在模拟器本身)。如果是这样的使用情况本地主机不会工作。在模拟器上本地主机是实际的模拟设备的环回地址,而不是计算机的环回地址。

在使用网络上,你需要使用10.0.2.2连接到计算机的本地主机/回送地址的仿真器。例如...

 私有静态最后弦乐LOGIN_URL =htt​​p://10.0.2.2/webservice/login.php;
私有静态最后弦乐LOGIN_URL =htt​​p://10.0.2.2/webservice/register.php;

请参阅使用模拟器文档中的模拟器联网部分。

编辑:作为窗口泄露错误的一种很可能的原因是您试图访问是在活动的主体对象从 doInBackground 您AsyncTasks的方法。你不能做到这一点为 doInBackground 运行在一个单独的线程。

在您A​​syncTasks申报主体用户名和密码字符串,你宣告你的失败布尔值。此外,您的静态最终字符串。例如...

 类CREATEUSER扩展的AsyncTask<字符串,字符串,字符串> {    私有静态最后弦乐LOGIN_URL =HTTP://localhost/webservice/register.php
    私有静态最后弦乐TAG_SUCCESS =成功;
    私有静态最后弦乐TAG_MESSAGE =消息;    布尔失败= F​​ALSE;
    字符串的用户名,密码;    ...
}

上preExecute()的AsyncTasks的方法EditTexts获取文本字符串(此方法的主要/ UI线程上运行)。例如...

  @覆盖
在preExecute保护无效(){
    super.on preExecute();
    。用户名= user.getText()的toString();
    。密码= pass.getText()的toString();
    pDialog =新ProgressDialog(Login.this);    ...
}

移动你JSONParser的声明和初始化到AsyncTasks的 doInBackgoround 方法。例如...

  @覆盖
保护字符串doInBackground(字符串参数... args){
    //检查成功标记
    诠释成功;
    JSONParser jsonParser =新JSONParser();    ...
}

I'm a beginner in android development.I have been looking for a week now. Followed all the tutorials word by word. Whenever I start my android emulator it first shows ProcessSystem isn't responding. Wait or Exit? Second the application loads but as soon as I click on the Register or Login button after filling out the form, after a few seconds of showing process dialog box, "Unfortunately the app has stopped working" is shown and it exits. My Login.java file is

public class Login extends Activity implements OnClickListener{

    private EditText user, pass;
    private Button mSubmit, mRegister;

     // Progress Dialog
    private ProgressDialog pDialog;

    // JSON parser class
    JSONParser jsonParser = new JSONParser();
    private static final String LOGIN_URL = "http://localhost/webservice/login.php";
    //JSON element ids from repsonse of php script:
    private static final String TAG_SUCCESS = "success";
    private static final String TAG_MESSAGE = "message";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);

        //setup input fields
        user = (EditText)findViewById(R.id.username);
        pass = (EditText)findViewById(R.id.password);
        //setup buttons
        mSubmit = (Button)findViewById(R.id.login);
        mRegister = (Button)findViewById(R.id.register);
        //register listeners
        mSubmit.setOnClickListener(this);
        mRegister.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.login:
                new AttemptLogin().execute();
            break;
        case R.id.register:
                Intent i = new Intent(this, Register.class);
                startActivity(i);
            break;
        default:
            break;
        }
    }

    class AttemptLogin extends AsyncTask<String, String, String> {


        boolean failure = false;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(Login.this);
            pDialog.setMessage("Attempting login...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        @Override
        protected String doInBackground(String... args) {
            // TODO Auto-generated method stub
             // Check for success tag
            int success;
            String username = user.getText().toString();
            String password = pass.getText().toString();
            try {
                // Building Parameters
                List<NameValuePair> params = new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("username", username));
                params.add(new BasicNameValuePair("password", password));
                Log.d("request!", "starting");
                // getting product details by making HTTP request
                JSONObject json = jsonParser.makeHttpRequest(LOGIN_URL, "POST", params);
                // check your log for json response
                Log.d("Login attempt", json.toString());
                // json success tag
                success = json.getInt(TAG_SUCCESS);
                if (success == 1) {
                    Log.d("Login Successful!", json.toString());
                    Intent i = new Intent(Login.this, Display.class);
                    finish();
                    startActivity(i);
                    return json.getString(TAG_MESSAGE);
                }else{
                    Log.d("Login Failure!", json.getString(TAG_MESSAGE));
                    return json.getString(TAG_MESSAGE);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
                return null;
        }

        protected void onPostExecute(String file_url) {
            // dismiss the dialog once product deleted
            pDialog.dismiss();
            if (file_url != null){

                Toast.makeText(Login.this, file_url, Toast.LENGTH_LONG).show();
            }
        }
    }
}

And my Register.java is

public class Register extends Activity implements OnClickListener{

    private EditText user, pass;
    private Button  mRegister;

     // Progress Dialog
    private ProgressDialog pDialog;
    // JSON parser class
    JSONParser jsonParser = new JSONParser();

    //php login script


    private static final String LOGIN_URL =  "http://localhost/webservice/register.php";

    private static final String TAG_SUCCESS = "success";
    private static final String TAG_MESSAGE = "message";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.register);
        user = (EditText)findViewById(R.id.username);
        pass = (EditText)findViewById(R.id.password);
        mRegister = (Button)findViewById(R.id.register);
        mRegister.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

                new CreateUser().execute();
    }

    class CreateUser extends AsyncTask<String, String, String> {

        boolean failure = false;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(Register.this);
            pDialog.setMessage("Creating User...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        @Override
        protected String doInBackground(String... args) {
            // TODO Auto-generated method stub
             // Check for success tag
            int success;
            String username = user.getText().toString();
            String password = pass.getText().toString();
            try {
                // Building Parameters
                List<NameValuePair> params = new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("username", username));
                params.add(new BasicNameValuePair("password", password));
                Log.d("request!", "starting");
                //Posting user data to script
                JSONObject json = jsonParser.makeHttpRequest(
                       LOGIN_URL, "POST", params);
                // full json response
                Log.d("Login attempt", json.toString());
                // json success element
                success = json.getInt(TAG_SUCCESS);
                if (success == 1) {
                    Log.d("User Created!", json.toString());
                    finish();
                    return json.getString(TAG_MESSAGE);
                }else{
                    Log.d("Login Failure!", json.getString(TAG_MESSAGE));
                    return json.getString(TAG_MESSAGE);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
            return null;

        }

        protected void onPostExecute(String file_url) {

            pDialog.dismiss();
            if (file_url != null){
                Toast.makeText(Register.this, file_url, Toast.LENGTH_LONG).show();
            }
        }
    }
}

THe JSONParser.java file is

public class JSONParser {
    static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";
    // constructor
    public JSONParser() {
    }
    public JSONObject getJSONFromUrl(final String url) {
        // Making HTTP request
        try {
           // Construct the client and the HTTP request.
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);
            // Execute the POST request and store the response locally.
            HttpResponse httpResponse = httpClient.execute(httpPost);
            // Extract data from the response.
            HttpEntity httpEntity = httpResponse.getEntity();
            // Open an inputStream with the data content.
            is = httpEntity.getContent();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            // Create a BufferedReader to parse through the inputStream.
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            // Declare a string builder to help with the parsing.
            StringBuilder sb = new StringBuilder();
            // Declare a string to store the JSON object data in string form.
            String line = null;
            // Build the string until null.
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            // Close the input stream.
            is.close();
            // Convert the string builder data to an actual string.
            json = sb.toString();
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }
        // Try to 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 the JSON Object.
        return jObj;
    }
    // function get json from url
    // by making HTTP POST or GET mehtod
    public JSONObject makeHttpRequest(String url, String method,
            List<NameValuePair> params) {
        // Making HTTP request
        try {
            // check for request method
            if(method == "POST"){
                // request method is POST
                // defaultHttpClient
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url);
                httpPost.setEntity(new UrlEncodedFormEntity(params));
                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();
        }else if(method == "GET"){
                // request method is GET
                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;

    }
}

the logcat is:

05-13 06:57:20.120: D/gralloc_goldfish(1219): Emulator without GPU emulation detected.
05-13 06:57:25.540: I/Choreographer(1219): Skipped 282 frames!  The application may be doing too much work on its main thread.
05-13 06:57:41.450: D/dalvikvm(1219): GC_FOR_ALLOC freed 138K, 6% free 3395K/3604K, paused 38ms, total 43ms
05-13 06:57:41.590: D/dalvikvm(1219): GC_FOR_ALLOC freed 35K, 6% free 3496K/3684K, paused 34ms, total 40ms
05-13 06:57:41.590: I/dalvikvm-heap(1219): Grow heap (frag case) to 4.085MB for 635812-byte allocation
05-13 06:57:42.280: D/request!(1219): starting
05-13 06:57:42.600: I/Choreographer(1219): Skipped 100 frames!  The application may be doing too much work on its main thread.
05-13 06:57:42.770: I/Choreographer(1219): ...and 8 more
05-13 06:58:08.680: W/System.err(1219): java.net.UnknownHostException: Unable to resolve host "http": No address associated with hostname
05-13 06:58:08.800: I/Choreographer(1219): Skipped 37 frames!  The application may be doing too much work on its main thread.
05-13 06:58:08.880: W/System.err(1219):     at java.net.InetAddress.lookupHostByName(InetAddress.java:424)
05-13 06:58:08.880: W/System.err(1219):     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
05-13 06:58:08.880: W/System.err(1219):     at java.net.InetAddress.getAllByName(InetAddress.java:214)
05-13 06:58:08.970: W/System.err(1219):     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
05-13 06:58:08.970: W/System.err(1219):     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
05-13 06:58:08.970: W/System.err(1219):     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
05-13 06:58:09.720: W/System.err(1219):     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
05-13 06:58:09.720: W/System.err(1219):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
05-13 06:58:09.720: W/System.err(1219):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
05-13 06:58:09.740: W/System.err(1219):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
05-13 06:58:09.740: W/System.err(1219):     at com.example.mysqltest.JSONParser.makeHttpRequest(JSONParser.java:89)
05-13 06:58:09.740: W/System.err(1219):     at com.example.mysqltest.Register$CreateUser.doInBackground(Register.java:94)
05-13 06:58:10.220: W/System.err(1219):     at com.example.mysqltest.Register$CreateUser.doInBackground(Register.java:1)
05-13 06:58:10.470: W/System.err(1219):     at android.os.AsyncTask$2.call(AsyncTask.java:288)
05-13 06:58:10.470: W/System.err(1219):     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
05-13 06:58:10.530: W/System.err(1219):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
05-13 06:58:10.530: W/System.err(1219):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
05-13 06:58:10.540: W/System.err(1219):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
05-13 06:58:10.540: W/System.err(1219):     at java.lang.Thread.run(Thread.java:841)
05-13 06:58:10.540: W/System.err(1219): Caused by: libcore.io.GaiException: getaddrinfo failed: EAI_NODATA (No address associated with hostname)
05-13 06:58:10.610: I/Choreographer(1219): Skipped 47 frames!  The application may be doing too much work on its main thread.
05-13 06:58:11.070: W/System.err(1219):     at libcore.io.Posix.getaddrinfo(Native Method)
05-13 06:58:11.070: W/System.err(1219):     at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:61)
05-13 06:58:11.070: W/System.err(1219):     at java.net.InetAddress.lookupHostByName(InetAddress.java:405)
05-13 06:58:11.080: W/System.err(1219):     ... 18 more
05-13 06:58:11.080: E/Buffer Error(1219): Error converting result java.lang.NullPointerException: lock == null
05-13 06:58:11.180: E/JSON Parser(1219): Error parsing data org.json.JSONException: End of input at character 0 of 
05-13 06:58:11.180: W/dalvikvm(1219): threadid=11: thread exiting with uncaught exception (group=0xb3af1ba8)
05-13 06:58:11.420: E/AndroidRuntime(1219): FATAL EXCEPTION: AsyncTask #1
05-13 06:58:11.420: E/AndroidRuntime(1219): Process: com.example.mysqltest, PID: 1219
05-13 06:58:11.420: E/AndroidRuntime(1219): java.lang.RuntimeException: An error occured while executing doInBackground()
05-13 06:58:11.420: E/AndroidRuntime(1219):     at android.os.AsyncTask$3.done(AsyncTask.java:300)
05-13 06:58:11.420: E/AndroidRuntime(1219):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
05-13 06:58:11.420: E/AndroidRuntime(1219):     at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
05-13 06:58:11.420: E/AndroidRuntime(1219):     at java.util.concurrent.FutureTask.run(FutureTask.java:242)
05-13 06:58:11.420: E/AndroidRuntime(1219):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
05-13 06:58:11.420: E/AndroidRuntime(1219):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
05-13 06:58:11.420: E/AndroidRuntime(1219):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
05-13 06:58:11.420: E/AndroidRuntime(1219):     at java.lang.Thread.run(Thread.java:841)
05-13 06:58:11.420: E/AndroidRuntime(1219): Caused by: java.lang.NullPointerException
05-13 06:58:11.420: E/AndroidRuntime(1219):     at com.example.mysqltest.Register$CreateUser.doInBackground(Register.java:97)
05-13 06:58:11.420: E/AndroidRuntime(1219):     at com.example.mysqltest.Register$CreateUser.doInBackground(Register.java:1)
05-13 06:58:11.420: E/AndroidRuntime(1219):     at android.os.AsyncTask$2.call(AsyncTask.java:288)
05-13 06:58:11.420: E/AndroidRuntime(1219):     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
05-13 06:58:11.420: E/AndroidRuntime(1219):     ... 4 more
05-13 06:58:15.100: E/WindowManager(1219): android.view.WindowLeaked: Activity com.example.mysqltest.Register has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{b3e3c660 V.E..... R.....ID 0,0-456,144} that was originally added here
05-13 06:58:15.100: E/WindowManager(1219):  at android.view.ViewRootImpl.<init>(ViewRootImpl.java:348)
05-13 06:58:15.100: E/WindowManager(1219):  at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:248)
05-13 06:58:15.100: E/WindowManager(1219):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
05-13 06:58:15.100: E/WindowManager(1219):  at android.app.Dialog.show(Dialog.java:286)
05-13 06:58:15.100: E/WindowManager(1219):  at com.example.mysqltest.Register$CreateUser.onPreExecute(Register.java:77)
05-13 06:58:15.100: E/WindowManager(1219):  at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587)
05-13 06:58:15.100: E/WindowManager(1219):  at android.os.AsyncTask.execute(AsyncTask.java:535)
05-13 06:58:15.100: E/WindowManager(1219):  at com.example.mysqltest.Register.onClick(Register.java:61)
05-13 06:58:15.100: E/WindowManager(1219):  at android.view.View.performClick(View.java:4438)
05-13 06:58:15.100: E/WindowManager(1219):  at android.view.View$PerformClick.run(View.java:18422)
05-13 06:58:15.100: E/WindowManager(1219):  at android.os.Handler.handleCallback(Handler.java:733)
05-13 06:58:15.100: E/WindowManager(1219):  at android.os.Handler.dispatchMessage(Handler.java:95)
05-13 06:58:15.100: E/WindowManager(1219):  at android.os.Looper.loop(Looper.java:136)
05-13 06:58:15.100: E/WindowManager(1219):  at android.app.ActivityThread.main(ActivityThread.java:5017)
05-13 06:58:15.100: E/WindowManager(1219):  at java.lang.reflect.Method.invokeNative(Native Method)
05-13 06:58:15.100: E/WindowManager(1219):  at java.lang.reflect.Method.invoke(Method.java:515)
05-13 06:58:15.100: E/WindowManager(1219):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
05-13 06:58:15.100: E/WindowManager(1219):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
05-13 06:58:15.100: E/WindowManager(1219):  at dalvik.system.NativeStart.main(Native Method)

EDIT After all the answers received. I made == to equals() and changed the url address to 10.0.2.2/webservices and had already added the internet permission but still no success. Still it exits and shows connection denied. Please help me with this. Now my logcat file is:

05-14 07:09:16.291     895-1191/com.example.mysqltest.app W/System.err﹕ org.apache.http.conn.HttpHostConnectException: Connection to http://10.0.2.2 refused
05-14 07:09:16.501     895-1191/com.example.mysqltest.app W/System.err﹕ at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183)
05-14 07:09:16.501     895-1191/com.example.mysqltest.app W/System.err﹕ at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
05-14 07:09:16.501     895-1191/com.example.mysqltest.app W/System.err﹕ at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
05-14 07:09:16.501     895-1191/com.example.mysqltest.app W/System.err﹕ at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
05-14 07:09:16.501     895-1191/com.example.mysqltest.app W/System.err﹕ at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
05-14 07:09:16.501     895-1191/com.example.mysqltest.app W/System.err﹕ at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
05-14 07:09:16.501     895-1191/com.example.mysqltest.app W/System.err﹕ at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
05-14 07:09:16.501     895-1191/com.example.mysqltest.app W/System.err﹕ at com.example.mysqltest.app.JSONParser.makeHttpRequest(JSONParser.java:90)
05-14 07:09:16.501     895-1191/com.example.mysqltest.app W/System.err﹕ at com.example.mysqltest.app.Register$CreateUser.doInBackground(Register.java:94)
05-14 07:09:16.511     895-1191/com.example.mysqltest.app W/System.err﹕ at com.example.mysqltest.app.Register$CreateUser.doInBackground(Register.java:64)
05-14 07:09:16.511     895-1191/com.example.mysqltest.app W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:288)
05-14 07:09:16.561     895-1191/com.example.mysqltest.app W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
05-14 07:09:16.561     895-1191/com.example.mysqltest.app W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
05-14 07:09:16.571     895-1191/com.example.mysqltest.app W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
05-14 07:09:16.571     895-1191/com.example.mysqltest.app W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
05-14 07:09:16.571     895-1191/com.example.mysqltest.app W/System.err﹕ at java.lang.Thread.run(Thread.java:841)
05-14 07:09:16.571     895-1191/com.example.mysqltest.app W/System.err﹕ Caused by: java.net.ConnectException: socket failed: EACCES (Permission denied)
05-14 07:09:17.191     895-1191/com.example.mysqltest.app W/System.err﹕ at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:181)
05-14 07:09:17.281     895-1191/com.example.mysqltest.app W/System.err﹕ ... 15 more
05-14 07:09:17.441     895-1191/com.example.mysqltest.app W/System.err﹕ Caused by: java.net.SocketException: socket failed: EACCES (Permission denied)
05-14 07:09:17.671     895-1191/com.example.mysqltest.app W/System.err﹕ at libcore.io.IoBridge.socket(IoBridge.java:576)
05-14 07:09:18.601     895-1191/com.example.mysqltest.app W/System.err﹕ Caused by: libcore.io.ErrnoException: socket failed: EACCES (Permission denied)
05-14 07:09:19.031     895-1191/com.example.mysqltest.app W/System.err﹕ at libcore.io.Posix.socket(Native Method)
05-14 07:09:19.031     895-1191/com.example.mysqltest.app W/System.err﹕ at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:181)
05-14 07:09:19.131     895-1191/com.example.mysqltest.app W/System.err﹕ at libcore.io.IoBridge.socket(IoBridge.java:561)
05-14 07:09:19.131     895-1191/com.example.mysqltest.app W/System.err﹕ ... 20 more
05-14 07:09:19.141     895-1191/com.example.mysqltest.app E/Buffer Error﹕ Error converting result java.lang.NullPointerException: lock == null
05-14 07:09:19.141     895-1191/com.example.mysqltest.app E/JSON Parser﹕ Error parsing data org.json.JSONException: End of input at character 0 of
05-14 07:09:19.221     895-1191/com.example.mysqltest.app W/dalvikvm﹕ threadid=12: thread exiting with uncaught exception (group=0xb4afeba8)
05-14 07:09:19.271     895-1191/com.example.mysqltest.app E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #2
    Process: com.example.mysqltest.app, PID: 895
    java.lang.RuntimeException: An error occured while executing doInBackground()
            at android.os.AsyncTask$3.done(AsyncTask.java:300)
            at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
            at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
            at java.util.concurrent.FutureTask.run(FutureTask.java:242)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
            at java.lang.Thread.run(Thread.java:841)
     Caused by: java.lang.NullPointerException
            at com.example.mysqltest.app.Register$CreateUser.doInBackground(Register.java:97)
            at com.example.mysqltest.app.Register$CreateUser.doInBackground(Register.java:64)
            at android.os.AsyncTask$2.call(AsyncTask.java:288)
            at java.util.concurrent.FutureTask.run(FutureTask.java:237)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
            at java.lang.Thread.run(Thread.java:841)
05-14 07:09:26.021      895-895/com.example.mysqltest.app E/WindowManager﹕ android.view.WindowLeaked: Activity com.example.mysqltest.app.Register has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{b4e28230 V.E..... R.....ID 0,0-563,96} that was originally added here
            at android.view.ViewRootImpl.<init>(ViewRootImpl.java:348)
            at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:248)
            at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
            at android.app.Dialog.show(Dialog.java:286)
            at com.example.mysqltest.app.Register$CreateUser.onPreExecute(Register.java:77)
            at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587)
            at android.os.AsyncTask.execute(AsyncTask.java:535)
            at com.example.mysqltest.app.Register.onClick(Register.java:61)
            at android.view.View.performClick(View.java:4438)

解决方案

As Apoorv says, you need to have permission to access any network.

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

If adding the above to your manifest doesn't fix it (or you already have that permission), the likely problem is your addresses...

private static final String LOGIN_URL = "http://localhost/webservice/login.php";
private static final String LOGIN_URL = "http://localhost/webservice/register.php";

I'm assuming your php server is running on the same computer as the emulator (but not on the emulator itself). If that's the case using localhost wont work. On an emulator localhost is the actual emulated device's loopback address and NOT the loopback address of the computer.

When using networking on an emulator you need to use 10.0.2.2 to connect to the computer's localhost / loopback address. Example...

private static final String LOGIN_URL = "http://10.0.2.2/webservice/login.php";
private static final String LOGIN_URL = "http://10.0.2.2/webservice/register.php";

See Using The Emulator documentation in the Emulator Networking section.

EDIT: One very likely reason for the Window Leaked error is you are trying to access objects that are in the main body of the Activities from the doInBackground methods of your AsyncTasks. You cannot do this as doInBackground runs on a separate thread.

In your AsyncTasks declare your username and password strings in the main body where you declare your failure boolean. Also your static final strings. Example...

class CreateUser extends AsyncTask<String, String, String> {

    private static final String LOGIN_URL =  "http://localhost/webservice/register.php";
    private static final String TAG_SUCCESS = "success";
    private static final String TAG_MESSAGE = "message";

    boolean failure = false;
    String username, password;

    ...
}

Get the text strings from the EditTexts in the onPreExecute() method of the AsyncTasks (this method runs on the main/UI thread). Example...

@Override
protected void onPreExecute() {
    super.onPreExecute();
    username = user.getText().toString();
    password = pass.getText().toString();
    pDialog = new ProgressDialog(Login.this);

    ...
}

Move your JSONParser declaration and initialisation into the doInBackgoround method of the AsyncTasks. Example...

@Override
protected String doInBackground(String... args) {
    // Check for success tag
    int success;
    JSONParser jsonParser = new JSONParser();

    ...
}

这篇关于不幸的是,应用程序停止工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆