Android得到呼入的手机号码
16lz
2021-01-26
最近开发项目中需要监听当前手机的状态(空闲,来电,接通),在来电时需要获取来电的手机号码。
写了一个服务一直运行在后台来对手机的状态进行监听,代码如下。
监听手机状态的Service:
import android.app.Service;import android.content.Context;import android.content.Intent;import android.os.IBinder;import android.telephony.PhoneStateListener;import android.telephony.TelephonyManager;public class PhoneService extends Service {@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();TelephonyManager manager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); manager.listen(new PhoneListener() , PhoneStateListener.LISTEN_CALL_STATE);}}
监听手机的状态PhoneListener:
import android.telephony.PhoneStateListener;import android.telephony.TelephonyManager;import android.util.Log;public class PhoneListener extends PhoneStateListener {/** * state当前手机的状态 * incomingNumber呼入的手机号码 */@Overridepublic void onCallStateChanged(int state, String incomingNumber) {// TODO Auto-generated method stubsuper.onCallStateChanged(state, incomingNumber);switch (state) {case TelephonyManager.CALL_STATE_IDLE://空闲或者挂断break;case TelephonyManager.CALL_STATE_OFFHOOK://接通break;case TelephonyManager.CALL_STATE_RINGING://来电响铃Log.d("TAG", "得到的来电号码是:" + incomingNumber);break;}}}
MainActivity:
import android.app.Activity;import android.content.Context;import android.content.Intent;import android.os.Bundle;public class MainActivity extends Activity {private Context context;public static final String ACTION = "recordingFlag"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); context = getApplicationContext(); //启动后台监听服务 Intent intent = new Intent(); intent.setAction(ACTION); intent.setPackage(getPackageName()); context.startService(intent); }}
manifest配置文件:
<!-- 注册服务 --> <service android:name="com.example.service.PhoneService"> <intent-filter> <action android:name="recordingFlag"/> </intent-filter> </service>
最后,不要忘记添加读取手机状态的权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
更多相关文章
- Android(安卓)沉浸式状态栏 SystemStatusManager源码
- Android(安卓)解决NestedScrollView 嵌套 RecyclerView出现的卡
- Open Core 上层代码结构
- Android(安卓)2.3.5 手动修改透明状态栏
- Android自动挂断来电(ITelephony的使用)
- Android(安卓)之SearchView翻译
- Android(安卓)通话处理流程【转】
- Android(安卓)webview 监听是否滚动到底部
- Android中监听EditText文本输入