短信快速回复(源码)

58 阅读2分钟

主界面

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