0

I am trying to connect to a server using this code, I tried the code in NetBeans as regular java frame and it works, when I transferred to android the application keep crashing. I added to manifest is there something else I have to add or something wrong with the code?

public class MainActivity extends AppCompatActivity {

    String host;
    String ip;
    String password;

    Session s;
    int x;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void onClick(View view) throws Exception {
            EditText t1 = (EditText) findViewById(R.id.editText);
            EditText t2 = (EditText) findViewById(R.id.editText2);
            EditText t3 = (EditText) findViewById(R.id.editText3);

        if (t1 != null && t2 != null && t3 != null) {
            host = t1.getText().toString();
            ip = t2.getText().toString();
            password = t3.getText().toString();

            JSch jsch = new JSch();
            Session session = jsch.getSession(host, ip, 22);
            session.setPassword(password);

            // Avoid asking for key confirmation
            Properties prop = new Properties();
            prop.put("StrictHostKeyChecking", "no");
            session.setConfig(prop);

            session.connect();

            // SSH Channel
            ChannelExec channelssh = (ChannelExec)
            session.openChannel("exec");
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            channelssh.setOutputStream(baos);

            // Execute command
            channelssh.setCommand("ls");
            channelssh.connect();
            channelssh.disconnect();
        }
        else {
            Toast.makeText(MainActivity.this, "Invaild Input", Toast.LENGTH_LONG).show();
        }
    }
}

Logcat:

06-27 16:28:40.607 7274-7274/com.example.mzj.cisco E/AndroidRuntime: FATAL EXCEPTION: main

 Process: com.example.mzj.cisco, PID: 7274
 java.lang.IllegalStateException: Could not execute method for android:onClick
     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener
           .onClick(AppCompatViewInflater.java:293)
     at android.view.View.performClick(View.java:4438)
     at android.view.View$PerformClick.run(View.java:18422)
     at android.os.Handler.handleCallback(Handler.java:733)
     at android.os.Handler.dispatchMessage(Handler.java:95)
     at android.os.Looper.loop(Looper.java:136)
     at android.app.ActivityThread.main(ActivityThread.java:5017)
     at java.lang.reflect.Method.invokeNative(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:515)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
     at dalvik.system.NativeStart.main(Native Method)
  Caused by: java.lang.reflect.InvocationTargetException
     at java.lang.reflect.Method.invokeNative(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:515)
     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener
          .onClick(AppCompatViewInflater.java:288)
     at android.view.View.performClick(View.java:4438) 
     at android.view.View$PerformClick.run(View.java:18422) 
     at android.os.Handler.handleCallback(Handler.java:733) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5017) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
     at dalvik.system.NativeStart.main(Native Method) 
  Caused by: com.jcraft.jsch.JSchException: android.os.NetworkOnMainThreadException
     at com.jcraft.jsch.Util.createSocket(Util.java:258)
     at com.jcraft.jsch.Session.connect(Session.java:186)
     at com.jcraft.jsch.Session.connect(Session.java:145)
     at com.example.mzj.cisco.MainActivity.onClick(MainActivity.java:57)
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener
         .onClick(AppCompatViewInflater.java:288) 
     at android.view.View.performClick(View.java:4438) 
     at android.view.View$PerformClick.run(View.java:18422) 
     at android.os.Handler.handleCallback(Handler.java:733) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5017) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
     at dalvik.system.NativeStart.main(Native Method) 
  Caused by: android.os.NetworkOnMainThreadException
     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145)
     at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
     at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
     at libcore.io.IoBridge.connect(IoBridge.java:112)
     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
     at java.net.Socket.startupSocket(Socket.java:567)
     at java.net.Socket.tryAllAddresses(Socket.java:128)
     at java.net.Socket.<init>(Socket.java:178)
     at java.net.Socket.<init>(Socket.java:150)
     at com.jcraft.jsch.Util.createSocket(Util.java:252)
     at com.jcraft.jsch.Session.connect(Session.java:186) 
     at com.jcraft.jsch.Session.connect(Session.java:145) 
     at com.example.mzj.cisco.MainActivity.onClick(MainActivity.java:57) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener
          .onClick(AppCompatViewInflater.java:288) 
     at android.view.View.performClick(View.java:4438) 
     at android.view.View$PerformClick.run(View.java:18422) 
     at android.os.Handler.handleCallback(Handler.java:733) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5017) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
     at dalvik.system.NativeStart.main(Native Method) 
Sufian
  • 6,405
  • 16
  • 66
  • 120

1 Answers1

1

You have to do this on a thread different from the main-thread

ligi
  • 39,001
  • 44
  • 144
  • 244