- Forum-Beiträge: 34
05.02.2014, 20:04:10 via Website
05.02.2014 20:04:10 via Website
Ich will zu einer Textview einen Text hinzufügen (nicht ändern), hatte auch schon eine Idee, von der ich mir eigendlich sicher war, sie klappt...
Erstmal hier mein Quellcode:
2
3import java.io.InputStream;
4import java.util.Properties;
5
6import com.jcraft.jsch.ChannelExec;
7import com.jcraft.jsch.JSch;
8import com.jcraft.jsch.Session;
9
10import android.os.AsyncTask;
11import android.os.Bundle;
12import android.app.Activity;
13import android.text.method.ScrollingMovementMethod;
14import android.view.Menu;
15import android.view.View;
16import android.widget.TextView;
17
18public class MainActivity extends Activity {
19
20public TextView txtDebug;
21
22 @Override
23 protected void onCreate(Bundle savedInstanceState) {
24 super.onCreate(savedInstanceState);
25 setContentView(R.layout.activity_main);
26
27 txtDebug = (TextView)findViewById(R.id.txtDebug);
28 txtDebug.setMovementMethod(new ScrollingMovementMethod());
29
30
31 }
32
33 @Override
34 public boolean onCreateOptionsMenu(Menu menu) {
35 // Inflate the menu; this adds items to the action bar if it is present.
36 getMenuInflater().inflate(R.menu.main, menu);
37 return true;
38 }
39
40 public void Shutdown (View v) {
41 Shell ShutdownShell = new Shell();
42 ShutdownShell.execute("testuser", "192.168.1.1", "passwort");
43 }
44
45
46 private class Shell extends AsyncTask<String, String, Long> {
47
48 @Override
49 protected Long doInBackground(String... arguments) {
50
51 // Extract Arguments
52 String user = arguments[0];
53 String host = arguments[1];
54 int port = 22;
55 String password = arguments[2];
56
57 System.out.println("SSH connecting...");
58 txtDebug.setText(txtDebug.getText() + "\nSSH connecting...");
59
60 try
61 {
62 JSch jsch = new JSch();
63 Session session = jsch.getSession(user,host, port);
64 session.setPassword(password);
65
66 // Avoid asking for key confirmation
67 Properties prop = new Properties();
68 prop.put("StrictHostKeyChecking", "no");
69 session.setConfig(prop);
70
71 session.connect();
72
73 System.out.println("SSH connected!");
74 txtDebug.setText(txtDebug.getText() + "\nSSH connected!");
75
76
77 ChannelExec channel = (ChannelExec)session.openChannel("exec");
78 channel.setCommand("sudo shutdown -h 0");
79 channel.connect();
80
81 InputStream input = channel.getInputStream();
82 int data = input.read();
83 txtDebug.setText(txtDebug.getText() + "\n" + data);
84
85
86 channel.disconnect();
87
88 }
89 catch (Exception e)
90 {
91 System.out.println(e.getMessage());
92 txtDebug.setText(txtDebug.getText() + "\n" + e.getMessage());
93 }
94
95 return null;
96 }
97
98 }
99
100}
Ein Beispiel:
System.out.println("SSH connecting...");
txtDebug.setText(txtDebug.getText() + "\nSSH connecting...");
Bei
System.out.println("SSH connecting...");
schreibt die Konsole "SSH connecting..." was ja auch so sein soll. Aber bei der nächsten Zeile:
txtDebug.setText(txtDebug.getText() + "\nSSH connecting...");
Stürzt die App einfach ab.
Ich weiß nicht, ob direkt beim "txtDebug.setText(txtDebug.getText() + "\nSSH connecting...");" was nicht stimmt, oder das ganze mit dem AsynkTask was zu tun hat oder was weiß ich...
Tut mir leid, ich bin noch neu im Geschäft ;)
Ich danke euch für eure Hilfe!
Gruß, Robert
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.