我是 android 新手,需要帮助,因为问题表明我想要一个后台服务来监听传入的短信(使用广播接收器?),然后尽快为每个短信发出带有短信正文和电话号码的 http 获取请求当它到达时(上传到网络服务器),尝试从头开始,想法和代码示例有人吗?:)
public class ReceiverContainer extends Service{
public SMSreceiver mSMSreceiver;
public IntentFilter mIntentFilter;
@Override
public void onCreate()
{
super.onCreate();
//SMS event receiver
mSMSreceiver = new SMSreceiver();
mIntentFilter = new IntentFilter();
mIntentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
registerReceiver(mSMSreceiver, mIntentFilter);
}
@Override
public void onDestroy()
{
super.onDestroy();
// Unregister the SMS receiver
unregisterReceiver(mSMSreceiver);
mSMSreceiver = null;
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
public class SMSreceiver extends BroadcastReceiver
{
public void Action(Context context,Intent intent) throws ClientProtocolException, URISyntaxException, IOException
{
Bundle myBundle = intent.getExtras();
SmsMessage [] messages = null;
String strMessage = "";
String msgFrom = "";
String msgText = "";
if (myBundle != null)
{
Object [] pdus = (Object[]) myBundle.get("pdus");
messages = new SmsMessage[pdus.length];
for (int i = 0; i < messages.length; i++)
{
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
strMessage += "SMS From: " + messages[i].getOriginatingAddress();
msgFrom += messages[i].getOriginatingAddress();
strMessage += " : ";
strMessage += messages[i].getMessageBody();
msgText += messages[i].getMessageBody();
strMessage += "\n";
}
Toast.makeText(context, strMessage, Toast.LENGTH_SHORT).show();
uploadMessage(context,msgFrom,msgText);
}
}
@Override
public void onReceive(Context context, Intent intent)
{
try {
Action(context,intent);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void uploadMessage(Context context,String number,String msg) throws URISyntaxException, ClientProtocolException, IOException
{
HttpResponse response = null;
HttpClient client = new DefaultHttpClient();
Uri.Builder path = new Uri.Builder();
path.scheme("http");
path.authority("technonectar11.com");
path.path("sms");
path.appendQueryParameter("fromno" , number);
path.appendQueryParameter("text" , msg);
path.appendQueryParameter("uname" , "vijay");
HttpGet request = new HttpGet(path.build().toString());
//request.setURI(new URI("http://www.technonectar11.com/sms/insertsms?fromno="+number+"&text="+msg+"&uname=vijay"));
response = client.execute(request);
String result = convertStreamToString(response.getEntity().getContent());
Toast.makeText(context, result, Toast.LENGTH_SHORT).show();
}
public static String convertStreamToString(InputStream inputStream) throws IOException
{
if (inputStream != null)
{
Writer writer = new StringWriter();
char[] buffer = new char[1024];
try
{
Reader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"),1024);
int n;
while ((n = reader.read(buffer)) != -1)
{
writer.write(buffer, 0, n);
}
}
finally
{
inputStream.close();
}
return writer.toString();
}
else
{
return "";
}
} }
这是我的全部代码,但是上传消息功能不起作用