接听电话时,会显示两个状态:来点状态和接听状态。下面示例演示了如何使用电话服务。
public class Main extends Activity { public class MyPhoneCallListener extends PhoneStateListener { @Override public void onCallStateChanged(int state, String incomingNumber) { switch (state) { //通话状态 case TelephonyManager.CALL_STATE_OFFHOOK: Toast.makeText(Main.this, "正在通话...", Toast.LENGTH_SHORT) .show(); break; //来点状态 case TelephonyManager.CALL_STATE_RINGING: Toast.makeText(Main.this, incomingNumber, Toast.LENGTH_SHORT).show(); break; } super.onCallStateChanged(state, incomingNumber); } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); MyPhoneCallListener myPhoneCallListener = new MyPhoneCallListener(); tm.listen(myPhoneCallListener, PhoneStateListener.LISTEN_CALL_STATE); } }配置文件
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="net.blogjava.mobile" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Main" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> </manifest>
我们了解了如何使用电话服务,现在可以配合音频服务来设计一个电话黑名单的功能。
public class Main extends Activity { public class MyPhoneCallListener extends PhoneStateListener { @Override public void onCallStateChanged(int state, String incomingNumber) { AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); ; switch (state) { case TelephonyManager.CALL_STATE_IDLE: audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); break; case TelephonyManager.CALL_STATE_RINGING: if ("12345678".equals(incomingNumber)) { audioManager .setRingerMode(AudioManager.RINGER_MODE_SILENT); } break; } super.onCallStateChanged(state, incomingNumber); } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); MyPhoneCallListener myPhoneCallListener = new MyPhoneCallListener(); tm.listen(myPhoneCallListener, PhoneStateListener.LISTEN_CALL_STATE); } }配置文件
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="net.blogjava.mobile" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Main" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> </manifest>
这样当设定电话来电时,就会将手机设置为静音。