안 드 로 이 드 방송 수신 감청 전화 상태 구현(전화의 상태,차단)
Android 의 이벤트 처리 체 제 는 두 가지 가 있 습 니 다.감청 과 반전 입 니 다.
A 감청 기반 이벤트 처리
주로 세 가지 대상 과 관련된다.EventSource(이벤트 소스),이벤트(이벤트),EventListener(이벤트 모니터)
감청 메커니즘 처리 사건 의 절차 도 는 다음 과 같다(위임 식:Delegation).
1:AndroidManifest.xml 목록 에 권한 을 추가 해 야 합 니 다.
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
2:라디오 등록 은 이벤트 의 등급(android 의 등급-1000~1000)에 주의해 야 합 니 다.
<receiver android:name=".PhoneBroadcastReceiver">
<intent-filter android:priority="1000">
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
<action android:name="android.intent.action.PHONE_STATE"/>
</intent-filter>
</receiver>
자세 한 설정 은 AndroidManifest.xml 를 보십시오.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.zyw.broadcastsendsms"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".SendSMS"
android:label="@string/title_activity_send_sms" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".PhoneBroadcastReceiver">
<intent-filter android:priority="1000">
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
<action android:name="android.intent.action.PHONE_STATE"/>
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
</manifest>
3:방송의 실현 클래스 를 작성 하려 면 BroadcastReceiver 를 계승 하여 onReceive()방법 이 필요 합 니 다.프로그램의 원본 코드 는 다음 과 같 습 니 다.
package com.zyw.broadcastsendsms;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.TelephonyManager;
import android.util.Log;
public class PhoneBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = "message";
private static boolean mIncomingFlag = false;
private static String mIncomingNumber = null;
@Override
public void onReceive(Context context, Intent intent) {
//
if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {
mIncomingFlag = false;
String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
Log.i(TAG, "call OUT:" + phoneNumber);
} else {
//
TelephonyManager tManager = (TelephonyManager) context
.getSystemService(Service.TELEPHONY_SERVICE);
switch (tManager.getCallState()) {
case TelephonyManager.CALL_STATE_RINGING:
mIncomingNumber = intent.getStringExtra("incoming_number");
Log.i(TAG, "RINGING :" + mIncomingNumber);
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
if (mIncomingFlag) {
Log.i(TAG, "incoming ACCEPT :" + mIncomingNumber);
}
break;
case TelephonyManager.CALL_STATE_IDLE:
if (mIncomingFlag) {
Log.i(TAG, "incoming IDLE");
}
break;
}
}
}
/*@Override
public void onReceive(Context context, Intent intent) {
String number = getResultData();
if("5556".equals(number)){
setResultData(null);//
}else{
number = "12593"+ number; // ,
setResultData(number);
}
}*/
}
이상 의 내용 은 안 드 로 이 드 방송 이 감청 전화 상태(전화의 상태,차단)를 실현 하 는 것 에 관 한 지식 을 소개 하 였 으 니 여러분 에 게 도움 이 되 기 를 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.