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