不幸的是,Android应用程序被停止了

不幸的是,Android应用程序被停止了,android,Android,我想用Android做一个登录程序。我为这个登录程序编写了代码。在这个程序中,我将用户名和密码发送到服务器进行身份验证。但当我打开应用程序,输入用户名和密码,然后点击登录按钮时,我的应用程序不幸停止了。但用户名和密码将发送到服务器。这意味着当我点击登录按钮时,我的应用程序将停止。这是我的密码 public class LogIn extends Activity implements View.OnClickListener { private Socket socket; p

我想用Android做一个登录程序。我为这个登录程序编写了代码。在这个程序中,我将用户名和密码发送到服务器进行身份验证。但当我打开应用程序,输入用户名和密码,然后点击登录按钮时,我的应用程序不幸停止了。但用户名和密码将发送到服务器。这意味着当我点击登录按钮时,我的应用程序将停止。这是我的密码

public class LogIn extends Activity implements View.OnClickListener {

    private Socket socket;
    private DataOutputStream out;
    private DataInputStream in;

    private String username,password,s;

    EditText eT_username,eT_password;
    Button b_login,b_signup,b_connect;
    TextView t;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_log_in);

        eT_username = (EditText)findViewById(R.id.eT_username);
        eT_password = (EditText)findViewById(R.id.eT_password);

        b_login = (Button)findViewById(R.id.b_login);
        b_signup = (Button)findViewById(R.id.b_signup);
        b_connect = (Button)findViewById(R.id.b_connect);

        t = (TextView)findViewById(R.id.tV);

        b_login.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        String toast_msg;
        try {
            out = new DataOutputStream(socket.getOutputStream());
            in = new DataInputStream(socket.getInputStream());

            out.writeUTF("1");

            username = eT_username.getText().toString();
            password = eT_password.getText().toString();

            out.writeUTF(username);
            //        out.flush();
            out.writeUTF(password);
            //        out.flush();

            t.setText("hi");

            s = in.readUTF();


            if (s.equals("ok")) {
                toast_msg = "Login is successfull";
                t.setText(toast_msg);
            } else {
                toast_msg = "username or password is incorrect";
                t.setText(toast_msg);
            }

        } catch (IOException e) {
            t.setText(e.toString());
        }
    }

    public void connect(View v)
    {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try
                {
                    socket = new Socket("192.168.0.101",5000);

                }
                catch(Exception e)
                {
                    TextView t = (TextView)findViewById(R.id.textView);
                    t.setText(e.toString());
                    //   Toast.makeText(LogIn.this,"Make sure that you are connected to Internet",Toast.LENGTH_LONG).show();
                }
            }
        }).start();
    }

    public void openSignUp(View v)
    {
        if (v.getId()== R.id.b_signup)
        {
            Intent i =  new Intent(LogIn.this,SignUp.class);
            startActivity(i);
        }
        new SignUp(socket);
    }
}
错误:

02-17 23:34:34.340 2156-2156/? E/Zygote: v2
02-17 23:34:34.340 2156-2156/? I/libpersona: KNOX_SDCARD checking this for 10118
02-17 23:34:34.340 2156-2156/? I/libpersona: KNOX_SDCARD not a persona
02-17 23:34:34.340 2156-2156/? I/SELinux: Function: selinux_compare_spd_ram , priority [2] , priority version is VE=SEPF_SM-G531F_5.1.1_0020
02-17 23:34:34.340 2156-2156/? E/SELinux: [DEBUG] get_category: variable seinfo: default sensitivity: NULL, cateogry: NULL
02-17 23:34:34.340 2156-2156/? I/art: Late-enabling -Xcheck:jni
02-17 23:34:34.350 2156-2156/? D/TimaKeyStoreProvider: in addTimaSignatureService
02-17 23:34:34.350 2156-2156/? D/TimaKeyStoreProvider: TimaSignature is unavailable
02-17 23:34:34.350 2156-2156/? D/ActivityThread: Added TimaKesytore provider
02-17 23:34:34.350 2156-2156/? I/SAMP: ActivityThread() - SAMP_ENABLE : true
02-17 23:34:34.450 2156-2156/? D/ContextImpl: ContextImpl running for user UserHandle{0} 0
02-17 23:34:34.470 2156-2156/kiran.onlinejavacompiler D/ContextImpl: ContextImpl running for user UserHandle{0} 0
02-17 23:34:34.470 2156-2156/kiran.onlinejavacompiler W/ResourcesManager: getTopLevelResources: null for user  0
02-17 23:34:34.490 2156-2156/kiran.onlinejavacompiler D/ContextImpl: ContextImpl running for user UserHandle{0} 0
02-17 23:34:34.500 2156-2156/kiran.onlinejavacompiler D/ContextImpl: ContextImpl running for user UserHandle{0} 0
02-17 23:34:34.500 2156-2156/kiran.onlinejavacompiler W/ResourcesManager: getTopLevelResources: null for user  0
02-17 23:34:34.510 2156-2156/kiran.onlinejavacompiler W/ResourcesManager: getTopLevelResources: null for user  0
02-17 23:34:34.510 2156-2156/kiran.onlinejavacompiler D/DisplayManager: DisplayManager()
02-17 23:34:34.560 2156-2156/kiran.onlinejavacompiler D/PhoneWindow: *FMB* installDecor mIsFloating : false
02-17 23:34:34.560 2156-2156/kiran.onlinejavacompiler D/PhoneWindow: *FMB* installDecor flags : -2139029248
02-17 23:34:34.600 2156-2199/kiran.onlinejavacompiler D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
02-17 23:34:34.630 2156-2156/kiran.onlinejavacompiler D/PhoneWindow: *FMB* isFloatingMenuEnabled mFloatingMenuBtn : null
02-17 23:34:34.630 2156-2156/kiran.onlinejavacompiler D/PhoneWindow: *FMB* isFloatingMenuEnabled return false
02-17 23:34:34.670 2156-2199/kiran.onlinejavacompiler I/OpenGLRenderer: Initialized EGL, version 1.4
02-17 23:34:34.670 2156-2199/kiran.onlinejavacompiler D/GC: <tid=2199> OES20 ===> GC Version   : GC version rls_5011p6_GC5.5.13 
02-17 23:34:34.680 2156-2199/kiran.onlinejavacompiler D/OpenGLRenderer: Enabling debug mode 0
02-17 23:34:34.840 2156-2156/kiran.onlinejavacompiler I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@3241f92a time:6983437
02-17 23:34:36.730 2156-2156/kiran.onlinejavacompiler D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
02-17 23:34:38.940 2156-2156/kiran.onlinejavacompiler D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
02-17 23:34:41.900 2156-2156/kiran.onlinejavacompiler D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
02-17 23:34:44.820 2156-2156/kiran.onlinejavacompiler D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
02-17 23:34:44.900 2156-2156/kiran.onlinejavacompiler D/AndroidRuntime: Shutting down VM
02-17 23:34:44.900 2156-2156/kiran.onlinejavacompiler E/AndroidRuntime: FATAL EXCEPTION: main Process: kiran.onlinejavacompiler, PID: 2156 android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1147)
at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:249)
at libcore.io.IoBridge.recvfrom(IoBridge.java:553)
at java.net.PlainSocketImpl.read(PlainSocketImpl.java:485)
at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:37)
at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:237)
at libcore.io.Streams.readFully(Streams.java:81)
at java.io.DataInputStream.readShort(DataInputStream.java:152)
at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:165)
at java.io.DataInputStream.readUTF(DataInputStream.java:169)
at kiran.onlinejavacompiler.LogIn.onClick(LogIn.java:65)
at android.view.View.performClick(View.java:5076)
at android.view.View$PerformClick.run(View.java:20279)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5910)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
02-17 23:34:46.350 2156-2156/kiran.onlinejavacompiler I/Process: Sending signal. PID: 2156 SIG: 9
02-1723:34:34.340 2156-2156/?E/合子:v2
02-17 23:34:34.340 2156-2156/? I/libpersona:KNOX_SDCARD检查10118
02-17 23:34:34.340 2156-2156/? I/libpersona:KNOX_SDCARD不是人物角色
02-17 23:34:34.340 2156-2156/? I/SELinux:功能:SELinux\u比较\u spd\u ram,优先级[2],优先级版本为VE=SEPF\u SM-G531F\u 5.1.1\u 0020
02-17 23:34:34.340 2156-2156/? E/SELinux:[调试]获取类别:变量seinfo:默认灵敏度:NULL,类别:NULL
02-17 23:34:34.340 2156-2156/? I/art:Late-enabling-Xcheck:jni
02-17 23:34:34.350 2156-2156/? D/TimaKeyStoreProvider:添加TimasignatureService
02-17 23:34:34.350 2156-2156/? D/TimaKeyStoreProvider:Timasignation不可用
02-17 23:34:34.350 2156-2156/? D/ActivityThread:添加了TimakesStore提供程序
02-17 23:34:34.350 2156-2156/? I/SAMP:ActivityThread()-SAMP_ENABLE:true
02-17 23:34:34.450 2156-2156/? D/ContextImpl:ContextImpl正在为用户UserHandle{0}0运行
02-17 23:34:34.470 2156-2156/kiran.onlinejavacompiler D/ContextImpl:ContextImpl为用户UserHandle{0}0运行
02-17 23:34:34.470 2156-2156/kiran.onlinejavacompiler W/ResourcesManager:gettoplavelresources:用户0为null
02-17 23:34:34.490 2156-2156/kiran.onlinejavacompiler D/ContextImpl:ContextImpl为用户UserHandle{0}0运行
02-17 23:34:34.500 2156-2156/kiran.onlinejavacompiler D/ContextImpl:ContextImpl为用户UserHandle{0}0运行
02-17 23:34:34.500 2156-2156/kiran.onlinejavacompiler W/ResourcesManager:GetToLevel资源:用户0为空
02-17 23:34:34.510 2156-2156/kiran.onlinejavacompiler W/ResourcesManager:GetTopLevel资源:用户0为null
02-17 23:34:34.510 2156-2156/kiran.onlinejavacompiler D/DisplayManager:DisplayManager()
02-17 23:34:34.560 2156-2156/kiran.onlinejavacompiler D/PhoneWindow:*FMB*installDecor错流:false
02-17 23:34:34.560 2156-2156/kiran.onlinejavacompiler D/PhoneWindow:*FMB*installDecor标志:-2139029248
02-17 23:34:34.600 2156-2199/kiran.onlinejavacompiler D/OpenGLRenderer:使用EGL\u交换\u行为\u保留:true
02-17 23:34:34.630 2156-2156/kiran.onlinejavacompiler D/PhoneWindow:*FMB*isFloatingMenuEnabled mFloatingMenuBtn:null
02-17 23:34:34.630 2156-2156/kiran.onlinejavacompiler D/PhoneWindow:*FMB*isFloatingMenuEnabled返回false
02-17 23:34:34.670 2156-2199/kiran.onlinejavacompiler I/OpenGLRenderer:初始化EGL,版本1.4
02-17 23:34:34.670 2156-2199/kiran.onlinejavacompiler D/GC:OES20===>GC版本:GC版本rls\U 5011p6\U GC5.5.13
02-17 23:34:34.680 2156-2199/kiran.onlinejavacompiler D/OpenGLRenderer:启用调试模式0
02-17 23:34:34.840 2156-2156/kiran.onlinejavacompiler I/Timeline:Timeline:Activity\u idle id:android.os。BinderProxy@3241f92a时间:6983437
02-17 23:34:36.730 2156-2156/kiran.onlinejavacompiler D/ViewRootImpl:ViewPostImeInputStage操作关闭
02-17 23:34:38.940 2156-2156/kiran.onlinejavacompiler D/ViewRootImpl:ViewPostImeInputStage操作关闭
02-17 23:34:41.900 2156-2156/kiran.onlinejavacompiler D/ViewRootImpl:ViewPostImeInputStage操作关闭
02-17 23:34:44.820 2156-2156/kiran.onlinejavacompiler D/ViewRootImpl:ViewPostImeInputStage操作关闭
02-17 23:34:44.900 2156-2156/kiran.onlinejavacompiler D/AndroidRuntime:关闭VM
02-17 23:34:44.900 2156-2156/kiran.onlinejavacompiler E/AndroidRuntime:致命异常:主进程:kiran.onlinejavacompiler,PID:2156 android.os.NetworkOnMainThreadException
在android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1147)
位于libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:249)
位于libcore.io.IoBridge.recvfrom(IoBridge.java:553)
位于java.net.PlainSocketImpl.read(PlainSocketImpl.java:485)
在java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:37)
在java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:237)
在libcore.io.Streams.readFully中(Streams.java:81)
位于java.io.DataInputStream.readShort(DataInputStream.java:152)
位于java.io.DataInputStream.readUnsignedShort(DataInputStream.java:165)
位于java.io.DataInputStream.readUTF(DataInputStream.java:169)
在kiran.onlinejavacompiler.LogIn.onClick(LogIn.java:65)
在android.view.view.performClick上(view.java:5076)
在android.view.view$PerformClick.run(view.java:20279)
位于android.os.Handler.handleCallback(Handler.java:739)
位于android.os.Handler.dispatchMessage(Handler.java:95)
位于android.os.Looper.loop(Looper.java:135)
位于android.app.ActivityThread.main(ActivityThread.java:5910)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
02-17 23:34:46.350 2156-2156/kiran.onlinejavacompiler I/进程:发送信号。PID:2156信号:9

您从未调用
connect()
方法,因此
socket
onClick()
方法中是
null
,您尝试使用它来获取输出流

但是,仅仅解决这个问题是不够的。你可以在一个单独的线程中实例化
socket
,然后尝试在主线程中实际使用socket(“UI线程”),这将再次导致你的应用程序崩溃


可能只是把所有的网络操作放在一个主线程中。

您可能正在尝试连接主线程,创建一个线程并在此线程上连接

代码中的另一个问题是连接方法,请像这样附上表达式(对不起我的英语)


你有什么例外?请张贴你的日志
public void connect(View v)
{
    new Thread(new Runnable() {
        @Override
        public void run() {
            try
            {
                socket = new Socket("192.168.0.101",5000);

            }
            catch(Exception e)
            {

               Runneable runException = new Runnable() {
                 @Override
               public void run() {
                TextView t = (TextView)findViewById(R.id.textView);
                t.setText(e.toString());
                //   Toast.makeText(LogIn.this,"Make sure that you are    connected to Internet",Toast.LENGTH_LONG).show();
           };
        runOnUiThread(runException);
            }
        }
    }).start();
}