From 51e0e922a980da23fcc1f4080b27b3d13c7c5842 Mon Sep 17 00:00:00 2001 From: Felix Bechstein Date: Thu, 17 Sep 2009 19:39:34 +0200 Subject: [PATCH] catching bind error :( --- AndroidManifest.xml | 9 ++-- res/layout/main.xml | 22 +++++---- src/de/ub0r/android/adBlock/AdBlock.java | 49 ++++++++++++++------ src/de/ub0r/android/adBlock/Connection.java | 41 +++++++++++++++++ src/de/ub0r/android/adBlock/Proxy.java | 70 +++++++++++++++++++++++++++++ 5 files changed, 162 insertions(+), 29 deletions(-) rewrite res/layout/main.xml (66%) rewrite src/de/ub0r/android/adBlock/AdBlock.java (61%) create mode 100644 src/de/ub0r/android/adBlock/Connection.java create mode 100644 src/de/ub0r/android/adBlock/Proxy.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 57eb507..5c4d622 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,9 +1,8 @@ - + android:versionName="0.0.1" android:versionCode="1"> + @@ -11,6 +10,8 @@ - + + + \ No newline at end of file diff --git a/res/layout/main.xml b/res/layout/main.xml dissimilarity index 66% index 3a5f117..5d12952 100644 --- a/res/layout/main.xml +++ b/res/layout/main.xml @@ -1,12 +1,10 @@ - - - - + + + + + + diff --git a/src/de/ub0r/android/adBlock/AdBlock.java b/src/de/ub0r/android/adBlock/AdBlock.java dissimilarity index 61% index 4ad96d0..bdc142d 100644 --- a/src/de/ub0r/android/adBlock/AdBlock.java +++ b/src/de/ub0r/android/adBlock/AdBlock.java @@ -1,13 +1,36 @@ -package de.ub0r.android.adBlock; - -import android.app.Activity; -import android.os.Bundle; - -public class AdBlock extends Activity { - /** Called when the activity is first created. */ - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.main); - } -} \ No newline at end of file +package de.ub0r.android.adBlock; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.Button; + +public class AdBlock extends Activity { + /** Called when the activity is first created. */ + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.main); + + ((Button) this.findViewById(R.id.start_service)) + .setOnClickListener(runStart); + ((Button) this.findViewById(R.id.stop_service)) + .setOnClickListener(runStop); + } + + /** OnClickListener. */ + private OnClickListener runStart = new OnClickListener() { + public void onClick(final View v) { + AdBlock.this.startService(new Intent(AdBlock.this, Proxy.class)); + } + }; + + /** OnClickListener. */ + private OnClickListener runStop = new OnClickListener() { + public void onClick(final View v) { + AdBlock.this.stopService(new Intent(AdBlock.this, Proxy.class)); + } + }; +} \ No newline at end of file diff --git a/src/de/ub0r/android/adBlock/Connection.java b/src/de/ub0r/android/adBlock/Connection.java new file mode 100644 index 0000000..0b09a1e --- /dev/null +++ b/src/de/ub0r/android/adBlock/Connection.java @@ -0,0 +1,41 @@ +package de.ub0r.android.adBlock; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.net.Socket; + +import android.content.Context; +import android.widget.Toast; + +public class Connection implements Runnable { + + private final Socket sock; + private final Context cont; + + public Connection(final Socket socket, Context context) { + this.sock = socket; + this.cont = context; + } + + @Override + public void run() { + try { + BufferedReader localReader = new BufferedReader( + new InputStreamReader(sock.getInputStream())); + BufferedWriter localWriter = new BufferedWriter( + new OutputStreamWriter(sock.getOutputStream())); + while (true) { + System.out.println(localReader.readLine()); + } + } catch (IOException e) { + e.printStackTrace(); + Toast.makeText(cont, e.toString(), Toast.LENGTH_LONG).show(); + } + } + +} diff --git a/src/de/ub0r/android/adBlock/Proxy.java b/src/de/ub0r/android/adBlock/Proxy.java new file mode 100644 index 0000000..ee85be0 --- /dev/null +++ b/src/de/ub0r/android/adBlock/Proxy.java @@ -0,0 +1,70 @@ +/** + * + */ +package de.ub0r.android.adBlock; + +import java.io.IOException; +import java.net.ServerSocket; +import java.net.Socket; + +import android.app.Service; +import android.content.Intent; +import android.os.IBinder; +import android.widget.Toast; + +/** + * @author flx + * + */ +public class Proxy extends Service implements Runnable { + + private Thread proxy = null; + private int port = 8088; + private boolean stop = false; + + /* (non-Javadoc) + * @see android.app.Service#onBind(android.content.Intent) + */ + @Override + public IBinder onBind(Intent intent) { + return null; + } + + @Override + public void onStart(Intent intent, int startId) { + super.onStart(intent, startId); + if (proxy == null) { + Toast.makeText(this, "starting proxy..", Toast.LENGTH_LONG).show(); + proxy = new Thread(this); + proxy.start(); + } else { + Toast.makeText(this, "proxy running", Toast.LENGTH_LONG).show(); + } + } + + @Override + public void onDestroy() { + super.onDestroy(); + Toast.makeText(this, "stopping proxy..", Toast.LENGTH_LONG).show(); + this.stop = true; + } + + @Override + public void run() { + try { + ServerSocket sock = new ServerSocket(this.port); + sock.bind(null); + Socket client; + while (!stop) { + client = sock.accept(); + if (client != null) { + Thread t = new Thread(new Connection(client, this)); + t.start(); + } + } + } catch (Exception e) { + e.printStackTrace(); + Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show(); + } + } +} -- 2.11.4.GIT