Android - Intent、PendingIntent、IntentFilter、BroadcastReceiver

来源:互联网 发布:java fork join 区别 编辑:程序博客网 时间:2024/05/21 07:25

Intent 构造方式

1. Intent(String action)  2. Intent(String action,Uri uri)  3. Intent(Context context,Class anyclass)

通过Intent可以启动Activity、Service,或者发送广播:

startActivity(Intent intent),startService(Intent intent),sendBroadcast(Intent intent)

例如直接打电话的方法如下:

Intent intent = new Intent("android.intent.action.CALL", Uri.parse("tel:" + "10086"));

startActivity(intent);  //需要加上"android.permission.CALL_PHONE"权限

另外,使用intent还可以传递参数:

Activity1:                                                                                          Activity2:

Intent intent = new Intent(Activity1.this,Activity2.this);             Bundle bundle = getIntent().getExtras();

intent.putExtra("NAME","taiwan1934");                                     String name = bundle.getString("NAME");

intent.putExtra("NUM",1934);                                                      Long num = bundle.getLong("NUM");

Bundle bundle = new Bundle();

bundle.putString("ADDR","shanghai");                                     String addr = bundle.getString("ADDR");

intent.putExtras(bundle);

startActivity(intent);                 

在Activity1里使用putExtra(String key, ``` value)以及putExtras(bundle),最终都会放在一个bundle里


IntentFilter与BroadcastReceiver

IntentFilter(String action),IntentFilter可以通过addAction(String action)不断添加任何想接收的Broadcast

Broadcast的接收处理:

BroadcastReceiver的注册与注销:

可以自己发送广播,系统也会发送各种广播,如开机广播:“android.intent.action.BOOT_COMPLETED”

PendingIntent创建方式:

1. static PendingIntent getActivity(Context context,int requestCode,Intent intent,int flags)

2. static PendingIntent getService(Context context,int requestCode,Intent intent,int flags)

3. static PendingIntent getBroadcast(Context context,int requestCode,Intent intent,int flags)

可以将PendingIntent和AlarmManager结合,在指定时间启动Activity、Service,发送Broadcast

以下是AlarmManager的两个常用方法:

void set(int type,long trigerAtMills,PendingIntent operation)

void cancel(PendingIntent)

例如在2分钟后发送一个自定义的广播:


0 0