介绍一个广播接收器的简单使用,实现一个界面的快捷启动,就是在拨打电话的时候,输入一个特定的号码,然后就会启动特定界面。
很简单的,就是用一个广播接收器,来接收打电话时发出来的广播,然后捕获它,然后就可以进行我们想要的操作啦,好,直接上代码。
public class PhoneReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
String outPhoneNumber = this.getResultData();
if(outPhoneNumber.equals("123456")) //当监听到用户拨打的是123456的时候,就进行下面的操作
{
Intent intent = new Intent(context, MyActivity.class);
//这个很重要,如果没有这一句,那就会报错,这一句是因为我们是在一个Receiver里面启动一个activity的,但activity的启动,都是放到一个栈里面的,但Receiver里面没有那个栈,所以我们要在这里启动一个activity,那就必须要指定这行代码
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
setResultData(null); //这行代码是把广播的数据设置为null,这样就不会把刚刚那个号码拨打出去啦,只会启动我们的activity
}
}
}
最后我们还要在AndroidMainfest文件里面注册这个广播接收器。
<receiver android:name="<span style="font-family: Arial, Helvetica, sans-serif;">PhoneReceiver</span><span style="font-family: Arial, Helvetica, sans-serif;">"></span>
<intent-filter android:priority="1000"><!-- 把优先级设置高一些,以便第一个拿到广播 -->
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
</intent-filter>
</receiver>
加上相应的权限。
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
结束。现在拨打123456这个号码就会启动MyActivity这个界面了。