我正在尝试制作一个简单的应用程序来拦截从我的电话运营商的电子邮件服务收到的所有短信。
工作原理:我收到电话运营商发来的电子邮件,每当电子邮件收到短信收件箱时,都会通知我。 SMS就是这样:
You have a new e-mail from:email@domain.com See it now through internet! Visit http://m.iclaro.com.br. Subject: SUBJECT GOES HERE
我正试图制作的这个应用程序必须截取这些短信,检索整个主题(“主题在这里”)并从一个只有主题内容的数字发送假短信。
我已经做过的事情:从这个电子邮件服务拦截所有这些短信,检索主题并从主题中假新来的数字(我选择了3)。
但现在我遇到了一个问题:这个新的伪造短信没有显示任何通知。
这是BroadcastReceiver:
public class SmsReceiver extends BroadcastReceiver
{
...
public void onReceive( Context context, Intent intent )
{
...
if(address.contains("1") && body.contains(replace))
{
body = body.substring(body.lastIndexOf(replace),body.length());
body = body.replace(replace, "");
address = "3";
ContentResolver contentResolver = context.getContentResolver();
ContentValues values = new ContentValues();
values.put("address", address);
values.put("body", body);
contentResolver.insert(Uri.parse("content://sms/inbox"), values);
this.abortBroadcast();
}
}
}
我也试过:
if(address.contains("1") && body.contains(replace))
{
this.abortBroadcast();
和
contentResolver.insert(Uri.parse("content://sms/inbox"), values);
this.abortBroadcast();
和
this.clearAbortBroadcast();
contentResolver.insert(Uri.parse("content://sms/inbox"), values);
this.abortBroadcast();
是否有重新通知最后收到的短信?有什么建议吗?
答案 0 :(得分:0)
编辑收到的短信后,您必须编码pdu。为此,您可以使用smslib等java库来编码pdu。
public class SmsReceiver extends BroadcastReceiver
{
...
public void onReceive( Context context, Intent intent )
{
...
if(address.contains("1") && body.contains(replace))
{
body = body.substring(body.lastIndexOf(replace),body.length());
body = body.replace(replace, "");
address = "3";
//ContentResolver contentResolver = context.getContentResolver();
//ContentValues values = new ContentValues();
//values.put("address", address);
//values.put("body", body);
//contentResolver.insert(Uri.parse("content://sms/inbox"), values);
this.abortBroadcast();
//create new pdu from the edited data
byte[] pdu = .......;
intent.putSerializableExtra("pdus", pdu);
context.sendBroadcast(intent);
}
}
}