1. 程式人生 > >java程式碼設定手機來電黑名單自動結束通話

java程式碼設定手機來電黑名單自動結束通話

今天講的是電話的黑名單自動結束通話的功能,所以現在跟著我的步驟來吧!

一、首先切換到project區間去,在main的資料夾裡面創一個aidl資料夾,把官網中下的兩個資料夾cope到這個aidl資料夾裡面去,再重新編譯兩次,第一次會報錯,不用管,再編譯一次就這可以,編譯兩次之後,在java類中寫一個ITlelphony的類能夠出現就算是成功了。



二、之後就需要在AndroidManifest加上許可權

<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
    <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>

三、這部分就直接是java程式碼了,所以在這裡我就直接上程式碼了
package com.zking.laci.android21_phone;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.RemoteException;
import android.telecom.TelecomManager;
import android.telephony.TelephonyManager;
import android.util.Log;

import com.android.internal.telephony.ITelephony;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 * Created by Laci on 2017/7/11.
 */

public class MyPhoneState extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        if("android.intent.action.PHONE_STATE".equals(intent.getAction())){
            //得到電話的管理者
            TelephonyManager telephonyManager= (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
            //得到電話的狀態
            int state=telephonyManager.getCallState();
            String number=intent.getStringExtra("incoming_number");
            switch (state) {
                case TelephonyManager.CALL_STATE_RINGING:
                    Log.i("test","來電了"+number);
                    //得到電話管理者的類
                    Class<TelephonyManager> clazz= TelephonyManager.class;
                    try {
                        //得到方法
                        Method method=clazz.getDeclaredMethod("getITelephony",null);
                        //設定可訪問
                        method.setAccessible(true);
                        try {
                            ITelephony iTelephony= (ITelephony) method.invoke(telephonyManager,null);
                            //判斷
                            if("18******882".equals(number)){//電話自己判斷,我這裡是舉例子
                                try {
                                    iTelephony.endCall();//結束通話
                                } catch (RemoteException e) {
                                    e.printStackTrace();
                                }
                            }
                        } catch (IllegalAccessException e) {
                            e.printStackTrace();
                        } catch (InvocationTargetException e) {
                            e.printStackTrace();
                        }
                    } catch (NoSuchMethodException e) {
                        e.printStackTrace();
                    }
                    break;
                case TelephonyManager.CALL_STATE_OFFHOOK:
                    Log.i("test","接聽了,通話中。。。錄音中");
                    break;
                case TelephonyManager.CALL_STATE_IDLE:
                    Log.i("test","結束通話了");
                    break;
            }
        }
    }
}

這樣子,電話的黑名單就可以了,是不是覺得簡單啊!

相關推薦

java程式碼設定手機來電黑名單自動結束通話

今天講的是電話的黑名單自動結束通話的功能,所以現在跟著我的步驟來吧! 一、首先切換到project區間去,在main的資料夾裡面創一個aidl資料夾,把官網中下的兩個資料夾cope到這個aidl資料夾裡面去,再重新編譯兩次,第一次會報錯,不用管,再編譯一次就這可以,編譯兩次

android java 程式碼設定 TextView drawableLeft

TextView 能實現一張圖配上文字,這樣就不用ImageView +TextView,在xml 設定: android:drawableLeft="@drawable/xxx"   但是如果

android 動態java程式碼設定背景以及字型等顏色

動態設定顏色 今天碰到個奇怪的事情,在設定動態設定TextView以及Button背景顏色的時候在java程式碼中設定編譯執行時候竟然出現的顏色和我color檔案中設定的顏色不一樣,而我在xml中設定的顏色完全正確。不多說上程式碼: 之前設定顏色程式碼:

Android使用Java程式碼設定selector或drawable,以及使用自定義控制元件方式使用它

鎮樓圖~~! TextView再給個selecotor 這種東西不要太簡單,但是這種東西我不想重複去寫N個Selector ! so~ /** * 獲取Selector * @param normalDraw *

Timer、CountDownTimer引發的自動結束通話問題(有價值)

1、背景 本身做了一個倒計時的功能,計時3分鐘,3分鐘後自動結束通話,可是退出Activity後,Timer還在。 bug:證明Timer沒有cancel。。 2、技術實現,用的CountDown

android 來電接聽和結束通話 支援目前所有版本

 ////////////////////////////////////結束通話電話///////////////////////////////////////     try {getITelephony(telmanager).endCall();} catch (

android 程式碼實現手機自動恢復出廠設定不需要許可權

需要啟用成為裝置管理器 DevicePolicyManager mDPM; boolean active = mDPM.isAdminActive(mDeviceAdminSample); if (active) {mDPM.wipeData(0);}

在Eclipse下編寫HTML/CSS/JS/JSP/Java程式碼時,程式碼自動提示的相關設定

最近在做一個javaweb的專案,在eclipse中編寫jsp程式碼時沒有程式碼提示確實讓人很蛋疼,之前一直寫Java程式碼或者在Dreamweaver中寫HTML程式碼時自動提示程式碼用起來特別爽,這突然間沒有程式碼提示真的很難受,所以上網找了下相關解決辦法,綜合一下完美的解決問題。 我們平時

Eclipse下設定tomcat,修改Java程式碼不必重啟tomcat

以前一直都是使用MyEclipse,在新公司原來專案比較大,使用MyEclipse無論是啟動還是在編碼過程中都非常慢,優化了也是。所以換了Eclipse,速度雖然提高了,但是有點非常不友好,就是不管我怎麼修改Java程式碼,哪怕只有僅僅一行程式碼都需要重新啟動,才能使修改程式碼生效,而這點MyEcl

MyBatis逆向工程——Java程式碼自動生成

關於程式碼自動生成,網上呢有很多工具,也有不同的方法,MyBatis是我接觸到的第一款程式碼自動生成器,比較簡單,程式碼量也比較少,也比較好理解,好了廢話不多說,下面就給大家說一下實現方法及程式碼解釋: 我們新建一個普通的Java專案,這裡我使用的工具是idea,是一款很強大的程式碼編寫工具。 首先是要實

如何使.xml檔案像.java檔案一樣在編寫時自動提示程式碼!(從檢視編輯改為原始碼編輯)

在Eclipse中開啟.xml檔案時,若沒有進行設定會以這種方式開啟(不怎麼適合編輯!): 但是我們強制將開啟方式改成text editor的時候,又會變成這種方式(沒有提示也不怎麼方便編輯): 網上一堆神仙,給的答案都不是我想要的!終於讓我發現了: 左下角有:Desi

程式碼生成器——java程式碼自動生成MAVEN包和類檔案

package cn.ps; import java.util.ArrayList; import java.util.List; import java.util.Scanner; import com.baomidou.mybatisplus.core.exceptions.Mybat

redis 主從備份自動切換+java程式碼實現類

閱讀本文您會學會: 1.redis 主從備份並自動切換(master slaver)模式的搭建 2.java 中 配合redis主從備份的方法 【實現目標】: master redis 正常執行 slaver redis 自動備份 master 的所有資料 當master

java程式碼自動生成

Java程式碼自動生成(優化封裝版) 一、前言 最近自己做了個專案,為了提升開發效率,節約不必要的開發時間,特意花時間優化了下程式碼自動生成工具。成果不錯,效率提高了不少,空閒時間特意寫下這篇文章,希望對大家有所幫助。 PS文章底部是我的程式碼下載連結,大家可以自行下載

通過Java程式碼自動釋出Geoserver的地圖服務WMS

import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; import org.apache.tools.zip.ZipOutputStream; import java.io.*; import java.n

android 在java程式碼中動態設定控制元件的位置和設定片大小

需要動態改變佈局裡面控制元件的相對位置 如: 1.改變RelativeLayout佈局裡面某個控制元件的layout_toLeftOf 的屬性 RelativeLayout.Layoutparams params = (RelativeLayout.LayoutParams)view

pycharm 程式碼設定自動換行(Ubuntu裡的pycharm一樣)

適用於分屏操作-----類似於下面這種,螢幕小啊,只能一半一半嘍 操作步驟: File-----Settings…-------Settings------Editor------General ------Soft Wraps--------- Use soft wraps in e

vscode儲存程式碼自動按照eslint規範格式化程式碼設定

eslint 自動格式化 先說一個前提吧,你在package.json中安裝了eslint的依賴,不然配置無用。 例如如下依賴: "eslint": "^4.19.1", "eslint-friendly-formatter": "^4.0.1", "eslint-

js根據手機螢幕寬度自動設定字型大小

(function(doc,win){ var docEl = doc.documentElement, //文件根標籤 resizeEvent = 'orientation

根據資料庫自動生成java程式碼

package com.power.util; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import