700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 广播接收者拦截电话

广播接收者拦截电话

时间:2024-07-17 05:37:15

相关推荐

广播接收者拦截电话

为了监听广播事件,Android中提供了一个BroadcastReceiver组件,该组件可以监听来自系统或者应用程序的广播。当Android系统产生一个广播事件时,可以有多个对应的BroadcastReceiver接受并进行处理。这些广播接收者只需要在清单文件或者代码中进行注册并指定要接受的广播事件,然后创建一个类继承自BroadcastReceiver类,重写onReceiver()方法,在方法中进行处理。广播接收者之拦截电话实现界面如下:

1.创建程序:程序对应的布局文件(activity_main.xml)如下所示:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/sdz"android:padding="15dp"tools:context=".MainActivity"><EditText android:id="@+id/et_ipnumber"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入拦截号码"/><Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/et_ipnumber"android:layout_centerHorizontal="true"android:background="#ACD6FF"android:onClick="click"android:paddingLeft="5dp"android:paddingRight="5dp"android:text="保存拦截号码"android:textSize="16sp"/></RelativeLayout>

2.编写页面交互代码:(MainActivity):

package cn.itcast.interceptcall;import android.Manifest;import android.content.SharedPreferences;import android.content.pm.PackageManager;import android.os.Bundle;import android.support.annotation.NonNull;import android.support.v4.app.ActivityCompat;import android.support.v4.content.ContextCompat;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends AppCompatActivity {private EditText et_ipnumber;private SharedPreferences sp;OutCallReceiver outCallReceiver;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);if(ContextCompat.checkSelfPermission(this, Manifest.permission.PROCESS_OUTGOING_CALLS)!= PackageManager.PERMISSION_GRANTED){ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.PROCESS_OUTGOING_CALLS},1);}et_ipnumber = (EditText) findViewById(R.id.et_ipnumber);// 创建SharedPreferences对象sp = getSharedPreferences("config", MODE_PRIVATE);}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {switch (requestCode){case 1:if(grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){}else{Toast.makeText(this,"You dennied the permission",Toast.LENGTH_SHORT).show();}break;default:}}public void click(View view) {// 获取用户输入的拦截号码String number = et_ipnumber.getText().toString().trim();//创建Editor对象,保存用户输入的拦截号码SharedPreferences.Editor editor = sp.edit();editor.putString("number", number);mit();Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();}}

3.运行程序

4.监听广播事件:创建一个广播接收者接受外拨电话的广播。

广播接收者OutCallReceiver代码如下:

package cn.itcast.interceptcall;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.SharedPreferences;public class OutCallReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {//获取拨打的电话号码String outcallnumber = getResultData();//创建SharedPreferences对象,获取拦截号码SharedPreferences sp =context.getSharedPreferences("config",Context.MODE_PRIVATE);String number =sp.getString("number","");//判断是否是拦截电话号码if(outcallnumber.equals(number)){//清除电话setResultData(null);}}}

创建完广播之后需要注册,注册代码如下

<receiver android:name=".OutCallReceiver"android:enabled="true"android:exported="true" ><intent-filter android:priority="1000"><action android:name="android.intent.action.NEW_OUTGOING_CALL"/></intent-filter></receiver>

5.测试:

输入需要拦截的号码,按保存拦截号码,会出现是否保存,按下是后,则会提示保存成功。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。