Browse Source

switched to intent

master
Robin Thoni 9 years ago
parent
commit
ed2314b413

+ 16
- 8
SMSServer/src/main/AndroidManifest.xml View File

@@ -13,8 +13,7 @@
13 13
     <uses-permission android:name="android.permission.SEND_SMS" />
14 14
     <uses-permission android:name="android.permission.READ_SMS" />
15 15
     <uses-permission android:name="android.permission.RECEIVE_SMS" />
16
-    <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
17
-    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 
16
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
18 17
 
19 18
     <application
20 19
         android:allowBackup="true"
@@ -22,7 +21,7 @@
22 21
         android:label="@string/app_name"
23 22
         android:theme="@style/AppTheme" >
24 23
         <activity
25
-            android:name="com.rob57530.smsserver.MainActivity"
24
+            android:name=".MainActivity"
26 25
             android:label="@string/app_name" >
27 26
             <intent-filter>
28 27
                 <action android:name="android.intent.action.MAIN" />
@@ -31,11 +30,20 @@
31 30
             </intent-filter>
32 31
         </activity>
33 32
 
34
-        <receiver android:name=".SMSReceiver" android:exported="true" >
35
-			<intent-filter android:priority="999">
36
-			  <action android:name="android.provider.Telephony.SMS_RECEIVED" />
37
-			</intent-filter>
38
-		</receiver>
33
+        <receiver
34
+            android:name=".SMSReceiver"
35
+            android:exported="true" >
36
+            <intent-filter android:priority="999" >
37
+                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
38
+            </intent-filter>
39
+        </receiver>
40
+        <receiver
41
+            android:name=".ADBReceiver"
42
+            android:exported="true" >
43
+            <intent-filter android:priority="999" >
44
+                <action android:name="com.rob57530.smsserver.ADB" />
45
+            </intent-filter>
46
+        </receiver>
39 47
     </application>
40 48
 
41 49
 </manifest>

+ 133
- 0
SMSServer/src/main/java/com/rob57530/smsserver/ADBReceiver.java View File

@@ -0,0 +1,133 @@
1
+package com.rob57530.smsserver;
2
+
3
+import android.app.Activity;
4
+import android.app.PendingIntent;
5
+import android.content.BroadcastReceiver;
6
+import android.content.Context;
7
+import android.content.Intent;
8
+import android.content.IntentFilter;
9
+import android.content.SharedPreferences;
10
+import android.os.AsyncTask;
11
+import android.preference.PreferenceManager;
12
+import android.telephony.SmsManager;
13
+import android.util.Base64;
14
+
15
+import org.apache.http.HttpResponse;
16
+import org.apache.http.HttpStatus;
17
+import org.apache.http.StatusLine;
18
+import org.apache.http.client.ClientProtocolException;
19
+import org.apache.http.client.HttpClient;
20
+import org.apache.http.client.methods.HttpGet;
21
+import org.apache.http.impl.client.DefaultHttpClient;
22
+
23
+import java.io.ByteArrayOutputStream;
24
+import java.io.IOException;
25
+
26
+public class ADBReceiver extends BroadcastReceiver {
27
+
28
+    private String m_http;
29
+
30
+    class RequestTask extends AsyncTask<String, String, String>
31
+    {
32
+        @Override
33
+        protected String doInBackground(String... uri)
34
+        {
35
+            HttpClient httpclient = new DefaultHttpClient();
36
+            HttpResponse response;
37
+            String responseString = null;
38
+            try
39
+            {
40
+                HttpGet get = new HttpGet(uri[0]);
41
+                get.setHeader("Host", m_http);
42
+                get.setHeader("Authorization", "Basic " + Base64.encodeToString("__gates__:gatespasswd".getBytes(), Base64.NO_WRAP));
43
+
44
+                response = httpclient.execute(get);
45
+                StatusLine statusLine = response.getStatusLine();
46
+                if (statusLine.getStatusCode() == HttpStatus.SC_OK)
47
+                {
48
+                    ByteArrayOutputStream out = new ByteArrayOutputStream();
49
+                    response.getEntity().writeTo(out);
50
+                    out.close();
51
+                    responseString = out.toString();
52
+                }
53
+                else
54
+                {
55
+                    response.getEntity().getContent().close();
56
+                    throw new IOException(statusLine.getReasonPhrase());
57
+                }
58
+            }
59
+            catch (ClientProtocolException e)
60
+            {
61
+                e.printStackTrace();
62
+            }
63
+            catch (IOException e)
64
+            {
65
+                e.printStackTrace();
66
+            }
67
+            return responseString;
68
+        }
69
+
70
+        @Override
71
+        protected void onPostExecute(String result)
72
+        {
73
+            super.onPostExecute(result);
74
+        }
75
+    }
76
+
77
+
78
+    public ADBReceiver() {
79
+    }
80
+
81
+    @Override
82
+    public void onReceive(Context context, Intent intent)
83
+    {
84
+        SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(context);
85
+        if (!p.getBoolean("running", false))
86
+            return;
87
+
88
+        m_http = p.getString("http", "");
89
+        String number = intent.getStringExtra("number");
90
+        String text = intent.getStringExtra("text");
91
+        final int id = intent.getIntExtra("id", -1);
92
+        if (id == -1)
93
+            return;
94
+        else if (number == null || number.length() == 0
95
+                || text == null || text.length() == 0)
96
+            new RequestTask().execute("http://" + m_http + "/sent.php?id=" + id + "&status=7");
97
+        else
98
+        {
99
+            try
100
+            {
101
+                String SENT = "SMS_SENT";
102
+                PendingIntent sent = PendingIntent.getBroadcast(context.getApplicationContext(), 0, new Intent(SENT), 0);
103
+                context.getApplicationContext().registerReceiver(new BroadcastReceiver() {
104
+                    @Override
105
+                    public void onReceive(Context arg0, Intent arg1) {
106
+                        int r = getResultCode();
107
+                        if (r == Activity.RESULT_OK)
108
+                            r = 1;
109
+                        else if (r == SmsManager.RESULT_ERROR_GENERIC_FAILURE)
110
+                            r = 3;
111
+                        else if (r == SmsManager.RESULT_ERROR_NO_SERVICE)
112
+                            r = 4;
113
+                        else if (r == SmsManager.RESULT_ERROR_NULL_PDU)
114
+                            r = 5;
115
+                        else if (r == SmsManager.RESULT_ERROR_RADIO_OFF)
116
+                            r = 6;
117
+                        else
118
+                            r = 7;
119
+
120
+                        new RequestTask().execute("http://" + m_http + "/sent.php?id="
121
+                                + id + "&status=" + r);
122
+                    }
123
+                }, new IntentFilter(SENT));
124
+
125
+                SmsManager.getDefault().sendTextMessage(number, null, text, sent, null);
126
+            }
127
+            catch (Exception e)
128
+            {
129
+                e.printStackTrace();
130
+            }
131
+        }
132
+    }
133
+}

+ 0
- 198
SMSServer/src/main/java/com/rob57530/smsserver/HttpHandler.java View File

@@ -1,198 +0,0 @@
1
-package com.rob57530.smsserver;
2
-
3
-import java.io.ByteArrayOutputStream;
4
-import java.io.IOException;
5
-import java.util.Vector;
6
-
7
-import javax.servlet.ServletException;
8
-import javax.servlet.http.HttpServletRequest;
9
-import javax.servlet.http.HttpServletResponse;
10
-
11
-import org.apache.http.HttpResponse;
12
-import org.apache.http.HttpStatus;
13
-import org.apache.http.StatusLine;
14
-import org.apache.http.client.ClientProtocolException;
15
-import org.apache.http.client.HttpClient;
16
-import org.apache.http.client.methods.HttpGet;
17
-import org.apache.http.impl.client.DefaultHttpClient;
18
-import org.eclipse.jetty.server.Request;
19
-import org.eclipse.jetty.server.handler.AbstractHandler;
20
-import org.json.JSONException;
21
-import org.json.JSONObject;
22
-
23
-import android.app.Activity;
24
-import android.app.PendingIntent;
25
-import android.content.BroadcastReceiver;
26
-import android.content.Context;
27
-import android.content.Intent;
28
-import android.content.IntentFilter;
29
-import android.os.AsyncTask;
30
-import android.telephony.SmsManager;
31
-import android.util.Base64;
32
-import android.util.Log;
33
-
34
-public class HttpHandler extends AbstractHandler
35
-{
36
-	private String m_http = null;
37
-	private Context m_context = null;
38
-	private Vector<Integer> m_ids = new Vector<Integer>();
39
-
40
-	class RequestTask extends AsyncTask<String, String, String>
41
-	{
42
-		@Override
43
-		protected String doInBackground(String... uri)
44
-		{
45
-			HttpClient httpclient = new DefaultHttpClient();
46
-			HttpResponse response;
47
-			String responseString = null;
48
-			try
49
-			{
50
-				HttpGet get = new HttpGet(uri[0]);
51
-				get.setHeader("Host", m_http);
52
-				get.setHeader("Authorization", "Basic " + Base64.encodeToString("__gates__:gatespasswd".getBytes(), Base64.NO_WRAP));
53
-
54
-				response = httpclient.execute(get);
55
-				StatusLine statusLine = response.getStatusLine();
56
-				if (statusLine.getStatusCode() == HttpStatus.SC_OK)
57
-				{
58
-					ByteArrayOutputStream out = new ByteArrayOutputStream();
59
-					response.getEntity().writeTo(out);
60
-					out.close();
61
-					responseString = out.toString();
62
-				}
63
-				else
64
-				{
65
-					response.getEntity().getContent().close();
66
-					throw new IOException(statusLine.getReasonPhrase());
67
-				}
68
-			}
69
-			catch (ClientProtocolException e)
70
-			{
71
-				e.printStackTrace();
72
-			}
73
-			catch (IOException e)
74
-			{
75
-				e.printStackTrace();
76
-			}
77
-			return responseString;
78
-		}
79
-
80
-		@Override
81
-		protected void onPostExecute(String result)
82
-		{
83
-			super.onPostExecute(result);
84
-		}
85
-	}
86
-
87
-	public void setContext(Context c)
88
-	{
89
-		m_context = c;
90
-	}
91
-
92
-	public void setHttp(String h)
93
-	{
94
-		m_http = h;
95
-	}
96
-
97
-	@Override
98
-	public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
99
-	{
100
-		response.setContentType("application/json;charset=utf-8");
101
-		response.setStatus(HttpServletResponse.SC_OK);
102
-		JSONObject root = new JSONObject();
103
-		if (target.equals("/send.php"))
104
-		{
105
-			String number = request.getParameter("to");
106
-			String text = request.getParameter("text");
107
-			int idTmp = -1;
108
-			try
109
-			{
110
-				idTmp = Integer.parseInt(request.getParameter("id"));
111
-			} 
112
-			catch(Exception e)
113
-			{
114
-				idTmp = m_ids.size();
115
-				m_ids.add(0);
116
-			}
117
-			final int id = idTmp;
118
-			if (number == null || number.length() == 0)
119
-			{
120
-				try
121
-				{
122
-					root.put("error", "Empty recipient");
123
-				}
124
-				catch (JSONException e)
125
-				{
126
-					response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
127
-				}
128
-			}
129
-			else if (text == null || text.length() == 0)
130
-			{
131
-				try
132
-				{
133
-					root.put("error", "Empty text");
134
-				}
135
-				catch (JSONException e)
136
-				{
137
-					response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
138
-				}
139
-			}
140
-			else
141
-			{
142
-				try
143
-				{
144
-					PendingIntent sent = null;
145
-					if (m_http.length() != 0 && id != -1)
146
-					{
147
-						String SENT = "SMS_SENT";
148
-						sent = PendingIntent.getBroadcast(m_context, 0, new Intent(SENT), 0);
149
-						m_context.registerReceiver(new BroadcastReceiver()
150
-						{
151
-							@Override
152
-							public void onReceive(Context arg0, Intent arg1)
153
-							{
154
-								int r = getResultCode();
155
-								if (r == Activity.RESULT_OK)
156
-									r = 1;
157
-								else if (r == SmsManager.RESULT_ERROR_GENERIC_FAILURE)
158
-									r = 3;
159
-								else if (r == SmsManager.RESULT_ERROR_NO_SERVICE)
160
-									r = 4;
161
-								else if (r == SmsManager.RESULT_ERROR_NULL_PDU)
162
-									r = 5;
163
-								else if (r == SmsManager.RESULT_ERROR_RADIO_OFF)
164
-									r = 6;
165
-								else
166
-									r = 7;
167
-								
168
-								RequestTask re = new RequestTask();
169
-								re.execute("http://" + m_http + "/sent.php?id=" + id + "&status=" + r);
170
-							}
171
-						}, new IntentFilter(SENT));
172
-					}
173
-
174
-					Log.d("SMSServerService", number);
175
-					SmsManager.getDefault().sendTextMessage(number, null, text, sent, null);
176
-					root.put("id", 0);
177
-					root.put("status", 0);
178
-				}
179
-				catch (Exception e)
180
-				{
181
-					e.printStackTrace();
182
-					try
183
-					{
184
-						root.put("error", e.getMessage());
185
-					}
186
-					catch (JSONException e1)
187
-					{
188
-						e1.printStackTrace();
189
-					}
190
-				}
191
-			}
192
-		}
193
-		else
194
-			return;
195
-		baseRequest.setHandled(true);
196
-		response.getWriter().println(root.toString());
197
-	}
198
-}

+ 3
- 10
SMSServer/src/main/java/com/rob57530/smsserver/SMSReceiver.java View File

@@ -13,8 +13,6 @@ import org.apache.http.client.HttpClient;
13 13
 import org.apache.http.client.methods.HttpGet;
14 14
 import org.apache.http.impl.client.DefaultHttpClient;
15 15
 
16
-import android.app.ActivityManager;
17
-import android.app.ActivityManager.RunningServiceInfo;
18 16
 import android.content.BroadcastReceiver;
19 17
 import android.content.Context;
20 18
 import android.content.Intent;
@@ -23,7 +21,6 @@ import android.os.AsyncTask;
23 21
 import android.preference.PreferenceManager;
24 22
 import android.telephony.SmsMessage;
25 23
 import android.util.Base64;
26
-import android.util.Log;
27 24
 
28 25
 public class SMSReceiver extends BroadcastReceiver
29 26
 {
@@ -72,19 +69,15 @@ public class SMSReceiver extends BroadcastReceiver
72 69
 		protected void onPostExecute(String result)
73 70
 		{
74 71
 			super.onPostExecute(result);
75
-			Log.d("SMSServerReceiver", result);
76 72
 		}
77 73
 	}
78 74
 	
79 75
 	@Override
80 76
 	public void onReceive(Context context, Intent intent)
81 77
 	{
82
-		Log.d("SMSServerReceiver", "sms");
83 78
         SharedPreferences pr = PreferenceManager.getDefaultSharedPreferences(context);
84 79
         if (!pr.getBoolean("running", false))
85 80
             return;
86
-
87
-		Log.d("SMSServerReceiver", "sms (running)");
88 81
 		
89 82
 		SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(context);
90 83
 		String http = p.getString("http", "");
@@ -100,10 +93,10 @@ public class SMSReceiver extends BroadcastReceiver
100 93
 	            	try
101 94
 					{
102 95
 		            	SmsMessage sms = SmsMessage.createFromPdu((byte[])smsExtra[i]);
103
-		            	String body = sms.getMessageBody().toString();
104
-		            	String address = sms.getOriginatingAddress();
105 96
 	            		RequestTask r = new RequestTask();
106
-						r.execute("http://" + http + "/received.php?sender=" + URLEncoder.encode(address, "utf-8") + "&text=" + URLEncoder.encode(body, "utf-8"), http);
97
+						r.execute("http://" + http + "/received.php?sender=" +
98
+                                URLEncoder.encode(sms.getOriginatingAddress(), "utf-8") + "&text=" +
99
+                                URLEncoder.encode(sms.getMessageBody().toString(), "utf-8"), http);
107 100
 					}
108 101
 					catch (UnsupportedEncodingException e)
109 102
 					{

Loading…
Cancel
Save