zoukankan      html  css  js  c++  java
  • 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);
        }
    }
  • 相关阅读:
    乌龟棋 (codevs 1068)题解
    全排列 (codevs 1294)题解
    最小伤害 题解
    编码问题 题解
    基础DAY3-运算符 逻辑运算符 if elif
    图解算法——合并k个排序列表(Merge k Sorted Lists)
    算法图解——组合求和( Combination Sum)
    make命令使用 & makefile编写详解
    并发工具CountDownLatch源码分析
    线程局部变量ThreadLocal实现原理
  • 原文地址:https://www.cnblogs.com/xgjblog/p/4087697.html
Copyright © 2011-2022 走看看