Android_PendingIntent的使用

   

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);
    }
}
posted @ 2014-11-10 17:37  新感觉  阅读(381)  评论(0编辑  收藏  举报