android的广播事件

在安卓中有广播事件,比如打电话可以在打电话的时候把电话号码进行修改可以做短信、电话的窃听等

做广播事件的主要步骤:
1.建一个类继承BroadcastReceiver;实现它的receive方法;

2.在清单文件中加入配置;

代码例:

创建类的代码:

public class OutCallDail extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		//System.out.println("111111111");
		
		String number = getResultData();
		SharedPreferences sp = context.getSharedPreferences("config", context.MODE_PRIVATE);
		String ipnumber = sp.getString("ipnumber", "");
		String newnumber = ipnumber + number;
		setResultData(newnumber);
		
	}

}

清单文件的配置代码:

 <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.jit.ipdail.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
        <span style="color:#ff6666;"><span style="color:#ff0000;background-color: rgb(255, 255, 255);"><receiver android:name="com.jit.ipdail.OutCallDail">
			<intent-filter>
			    <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
			</intent-filter>            
        </receiver></span>
</span>        
    </application>


广播事件也可以自己定义。

例:

在两个模块之间要通信,模块A发生了一个事情,这时候需要模块B做出一个相应的动作就可以用自定义的广播事件。

自己先定义一个项目A在A中定义一个按钮,点击事件就是发送一个广播,再定义一个项目B,B 就可以根据A的广播事件做出相应的动作。

步骤:

定义项目A:在点击事件中设置广播

定义项目B:在项目B中定义一个类继承BroadcastReceiver,实现里面的onreceive方法,再在配置文件中(清单文件)配置,

实现简单代码:

A中的点击事件:

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void click(View view){
    	Intent intent = new Intent();
    	intent.setAction("cn.jit.xxx");
    	sendBroadcast(intent, null);
    }
    

注意:sendBroadcast方法可以有多个 这个是无序的,sendOrderedBroadcast是有序的,sendOrderedBroadcast多个参数的是有序的 而且可以指定哪个实现BroadcastReceiver的类是必须走的,不可以被拦截。

在B中的代码:

实现自己的一个类:

public class MyBroadCast extends BroadcastReceiver {

	@Override
	public void onReceive(Context arg0, Intent arg1) {
		// TODO Auto-generated method stub
		
		Toast.makeText(arg0, "接受到了。。。", 0).show();
		
	}

}

在清单文件中的配置:

<receiver android:name="com.jit.b.MyBroadCast">
            <intent-filter >
                <action android:name="cn.jit.xxx">
                </action>
            </intent-filter>
        </receiver>

在A中的配置有序无序主要是可以与B中的清单文件配置有关,在intent-fileter 标签内有一个属性android:priority就是判断优先级的 优先级越大越先走,

还有一大主键service (服务)

创建一个服务的步骤:

1.先创建一个自己的类继承service,实现里面的onCreate和onDestroy方法(onCreate方法是服务开启的时候调用的;onDestroy方法是服务销毁时调用的)

2.在清单文件中进行配置service

3.在activity中开启服务;

实现的简单代码:

继承service的类

public class MyService extends Service {

	@Override
	public IBinder onBind(Intent arg0) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void onCreate() {
		// TODO Auto-generated method stub
		
		System.out.println("被创建000");
		super.onCreate();
	}

	@Override
	public void onDestroy() {
		// TODO Auto-generated method stub
		System.out.println("被销毁,,,");
		super.onDestroy();
	}
}

清单文件的配置代码:

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.jit.jianting.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <span style="color:#ff0000;">
        <service android:name="com.jit.jianting.MyService">
            <intent-filter >
                
            </intent-filter>
        </service></span>
        
    </application>

启动服务的代码:

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        <span style="color:#ff0000;">
        Intent intent = new Intent(this, MyService.class); 
        startService(intent);</span>
        
    }



四大组件:特定 都是要在清单文件配置

activity 界面 。用户交互的UI

service   后台运行的没有界面,长期后台存在,  提高应用程序进程的优先级

broadcast receiver 接受系统的广播事件, 自定义一些广播, (可以通过代码的方法注册,也可以通过清单文件注册)

content provider 把自己私有的数据,暴露给别的应用程序。

















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值