PendingIntent介绍
PendingIntent可以看作是对Intent的一个封装,但它不是立刻执行某个行为,而是满足某些条件或触发某些事件后才执行指定的行为。PendingIntent举例 1. 发送短信 import android.app.Activity; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.telephony.SmsManager; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class Test1Activity extends Activity implements OnClickListener { private Button btn1 = null; private SmsManager sm = null; private IntentFilter sendIntentFilter = null; private SmsBroadcastReceiver sendReceiver = null; private IntentFilter deliverIntentFilter = null; private SmsBroadcastReceiver deliverReceiver = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btn1 = (Button) this.findViewById(R.id.btn1); btn1.setOnClickListener(this); sm = SmsManager.getDefault(); sendIntentFilter = new IntentFilter("send_sms"); sendReceiver = new SmsBroadcastReceiver(); this.registerReceiver(sendReceiver, sendIntentFilter); deliverIntentFilter = new IntentFilter("deliver_sms"); deliverReceiver = new SmsBroadcastReceiver(); this.registerReceiver(deliverReceiver, deliverIntentFilter); } @Override public void onClick(View v) { switch(v.getId()) { case R.id.btn1: send_sms(); break; default: break; } } private void send_sms() { String destinationAddress = "1341024977"; String text = "宝贝"; Intent sIntent = new Intent("send_sms"); PendingIntent sentIntent = PendingIntent.getBroadcast(this, 0, sIntent, 0);//短信成功发送后才发送该广播 Intent dIntent = new Intent("deliver_sms"); PendingIntent deliveryIntent = PendingIntent.getBroadcast(this, 1, dIntent, 0);//短信成功接收后才发送该广播 sm.sendTextMessage(destinationAddress, null, text, sentIntent, deliveryIntent); } private class SmsBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if(intent.getAction() == "send_sms") { Toast.makeText(Test1Activity.this, "send sms successfully", Toast.LENGTH_LONG).show(); } if(intent.getAction() == "deliver_sms") { Toast.makeText(Test1Activity.this, "deliver sms successfully", Toast.LENGTH_LONG).show(); } } } } 2. 通知 import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class Test2Activity extends Activity implements OnClickListener { private Button btnNotify = null; private NotificationManager nm = null; private Notification notification = null; private Intent intent = null; private PendingIntent pi = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test2); btnNotify = (Button) this.findViewById(R.id.notify); btnNotify.setOnClickListener(this); } @Override public void onClick(View v) { switch(v.getId()) { case R.id.notify: testNotify(); } } @SuppressWarnings("deprecation") private void testNotify() { nm = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE); notification = new Notification(); notification.icon = R.drawable.ic_launcher; notification.tickerText = "你也是通知"; notification.defaults = Notification.DEFAULT_SOUND; intent = new Intent(this, Test1Activity.class); pi = PendingIntent.getActivity(this, 0, intent, 0);//用户点击该notification后才启动该activity notification.setLatestEventInfo(this, "title22", "text33", pi); nm.notify(1, notification); } }