如何利用广播知道谁给你打电话以及电话状态 —— >>
首先先有一个类继承 BroadcastReceiver ,重写 onReceive 方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 |
import
android.content.BroadcastReceiver
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.telephony.TelephonyManager
;
import
android.util.Log
;
/**
* Created by Administrator on 2017/7/11 0011.
*/
public
class
MyPhoneState
extends
BroadcastReceiver
{
private
TelephonyManager
tm
;
@Override
public
void
onReceive
(
Context
context
,
Intent
intent
)
{
if
(
"android.intent.action.PHONE_STATE"
.
equals
(
intent
.
getAction
())){
//获取电话管理者
tm
=
(
TelephonyManager
)
context
.
getSystemService
(
Context
.
TELECOM_SERVICE
);
int
state
=
tm
.
getCallState
();
//获取电话号码
String
number
=
intent
.
getStringExtra
(
"incoming_number"
);
switch
(
state
)
{
case
TelephonyManager
.
CALL_STATE_RINGING
:
Log
.
i
(
"test"
,
"有电话进来了:"
+
number
);
break
;
case
TelephonyManager
.
CALL_STATE_OFFHOOK
:
Log
.
i
(
"test"
,
"正在通话中:"
+
number
);
break
;
case
TelephonyManager
.
CALL_STATE_IDLE
:
Log
.
i
(
"test"
,
"通话结束:"
+
number
);
break
;
}
}
}
}
|
添加读取电话状态的权限
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 |
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android21_phone">
<!-- 读取电话状态的权限 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true" android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
|