主界面
SmsReceiverActivity.java
package zdq.msg;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.Toast;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
public class SmsReceiverActivity extends Activity {
private Button bt01;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getview();
bt01.setOnClickListener(bt01\_onclick);
}
private void getview(){
bt01\=(Button)findViewById(R.id.bt01);
}
private OnClickListener bt01\_οnclick=new OnClickListener(){
@Override
public void onClick(View v) {
if(bt01.getText().equals(getResources().getString(R.string.bt01))){
Intent intent \= new Intent();
intent.setClass(SmsReceiverActivity.this, Smsservice.class);
startService(intent);
bt01.setText(R.string.bt02);
Toast.makeText(SmsReceiverActivity.this, "打开监听", Toast.LENGTH\_SHORT).show();
}else{
Intent intent \= new Intent();
intent.setClass(SmsReceiverActivity.this, Smsservice.class);
stopService(intent);
bt01.setText(R.string.bt01);
Toast.makeText(SmsReceiverActivity.this, "关闭监听", Toast.LENGTH\_SHORT).show();
}
}
};
public boolean onCreateOptionsMenu(Menu menu){
menu.add(0,0,0,R.string.about);
menu.add(0,1,1,R.string.exit);
return super.onCreateOptionsMenu(menu);
}
public boolean onOptionsItemSelected(MenuItem item){
super.onOptionsItemSelected(item);
switch(item.getItemId()){
case 0:
openDialog();
break;
case 1:
finish();
break;
}
return true;
}
private void openDialog(){
new AlertDialog.Builder(this)
.setTitle(R.string.about)
.setMessage(R.string.message)
.setPositiveButton(R.string.ok,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}
).show();
}
}
短信回复对话框
package zdq.msg;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class SMSToast extends Activity {
private Button bt\_send;
private Button bt\_no;
private EditText et\_addr;
private EditText et\_msg;
private String addr;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.toast);
getview();
Intent intent \= this.getIntent();
addr \= (String) intent.getSerializableExtra("addr");
et\_addr.setText(addr);
et\_msg.setText(getResources().getString(R.string.msg\_body));
getclick();
}
private void getview(){
bt\_send\=(Button)findViewById(R.id.bt\_send);
bt\_no\=(Button)findViewById(R.id.bt\_no);
et\_addr\=(EditText)findViewById(R.id.et\_addr);
et\_msg\=(EditText)findViewById(R.id.et\_msg);
}
private void getclick(){
bt\_send.setOnClickListener(bt\_send\_onclick);
bt\_no.setOnClickListener(bt\_no\_onclick);
}
private OnClickListener bt\_send\_οnclick=new OnClickListener(){
@Override
public void onClick(View v) {
SendSms(SMSToast.this,et\_addr.getText().toString(),et\_msg.getText().toString());
finish();
}
};
private OnClickListener bt\_no\_οnclick=new OnClickListener(){
@Override
public void onClick(View v) {
finish();
}
};
/\*\*
\* 发送短信
\* @param context
\* @param addre
\* @param mess
\*/
public void SendSms(Context context,String addre, String mess)
{
SmsManager manager \= SmsManager.getDefault();
manager.sendTextMessage(addre, null, mess, null, null);
}
}
短信接收类
package zdq.msg;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;
public class SmsReceiver extends BroadcastReceiver{
private static final String strRes = "android.provider.Telephony.SMS\_RECEIVED";
private static final String TAG = "LocalService";
private String addr;
@Override
public void onReceive(Context context, Intent intent) {
/\*
\* 判断是否是SMS\_RECEIVED事件被触发
\*/
if (intent.getAction().equals(strRes)) {
Bundle bundle \= intent.getExtras();
if (bundle != null) {
Object\[\] pdus \= (Object\[\]) bundle.get("pdus");
SmsMessage\[\] msg \= new SmsMessage\[pdus.length\];
for (int i = 0; i < pdus.length; i++) {
msg\[i\] \= SmsMessage.createFromPdu((byte\[\]) pdus\[i\]);
}
if(msg.length!=0){
Log.i(TAG, "快速回复模式");
for (SmsMessage currMsg : msg) {
addr\=currMsg.getDisplayOriginatingAddress();
Intent mBootIntent \= new Intent(context, SmsReceiver.class);
mBootIntent \= new Intent(context, SMSToast.class);
mBootIntent.setAction("android.intent.action.MAIN");
mBootIntent.addCategory("android.intent.category.LAUNCHER");
mBootIntent.setFlags(Intent.FLAG\_ACTIVITY\_NEW\_TASK);
Bundle mBundle \= new Bundle();
mBundle.putSerializable("addr",addr);
mBootIntent.putExtras(mBundle);
context.startActivity(mBootIntent);
}
}
}
}
}
}
服务
package zdq.msg;
import android.app.Service;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
public class Smsservice extends Service {
private boolean isregiset = false;
private static final String MSG\_RECEIVED = "android.provider.Telephony.SMS\_RECEIVED";
private static final String TAG = "LocalService";
private SmsReceiver recevier;
@Override
public IBinder onBind(Intent arg0) {
Log.i(TAG, "onBind");
return null;
}
@Override
public void onDestroy()
{
Log.i(TAG, "onDestroy");
super.onDestroy();
unregisterReceiver(recevier);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
Log.i(TAG, "onStartCommand");
return super.onStartCommand(intent, flags, startId);
}
public void onStart(Intent intent,int startId){
Log.i(TAG, "onStart");
super.onStart(intent, startId);
recevier\=new SmsReceiver();
IntentFilter intentFilter \= new IntentFilter(MSG\_RECEIVED);
intentFilter.setPriority(1000);//设置优先级最大
registerReceiver(recevier , intentFilter);
isregiset\=true;
}
public void onCreate(){
Log.i(TAG, "onCreate");
super.onCreate();
}
public void regiset(View v) {
IntentFilter filter \= new IntentFilter(MSG\_RECEIVED);
filter.setPriority(1000);//设置优先级最大
registerReceiver(recevier, filter);
isregiset \= true;
Toast.makeText(this, "0", 0).show();
}
public void unregiset(View v) {
if (recevier != null && isregiset) {
unregisterReceiver(recevier);
isregiset \= false;
Toast.makeText(this, "成功", 0).show();
} else