判断播出的电话是否为紧急号码
- PhoneNumberUtilsAdapter.java
- PhoneNumberUtilsAdapterImpl.java
- NewOutgoingCallVoWIFIBroadcastIntentReceiver.java
- AndroidManifest.xml
PhoneNumberUtilsAdapter.java
package com.android.settings;import android.content.Context;
import android.content.Intent;public interface PhoneNumberUtilsAdapter {boolean isUriNumber(String number);boolean isSamePhoneNumber(String number1, String number2);String getNumberFromIntent(Intent intent, Context context);String convertKeypadLettersToDigits(String number);String stripSeparators(String number);
}
PhoneNumberUtilsAdapterImpl.java
package com.android.settings;import android.content.Context;
import android.content.Intent;
import android.telephony.PhoneNumberUtils;
import android.telephony.TelephonyManager;public class PhoneNumberUtilsAdapterImpl implements PhoneNumberUtilsAdapter {@Overridepublic boolean isUriNumber(String number) {return PhoneNumberUtils.isUriNumber(number);}@Overridepublic boolean isSamePhoneNumber(String number1, String number2) {return PhoneNumberUtils.compare(number1, number2);}@Overridepublic String getNumberFromIntent(Intent intent, Context context) {return PhoneNumberUtils.getNumberFromIntent(intent, context);}@Overridepublic String convertKeypadLettersToDigits(String number) {return PhoneNumberUtils.convertKeypadLettersToDigits(number);}@Overridepublic String stripSeparators(String number) {return PhoneNumberUtils.stripSeparators(number);}
}
NewOutgoingCallVoWIFIBroadcastIntentReceiver.java
package com.android.settings;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.text.TextUtils;
import android.telephony.TelephonyManager;
import android.app.Service;public class NewOutgoingCallVoWIFIBroadcastIntentReceiver extends BroadcastReceiver {PhoneNumberUtilsAdapter mPhoneNumberUtilsAdapter = new PhoneNumberUtilsAdapterImpl();Context mContext;String TAG = "NewOutgoingCallVoWIFIBroadcastIntentReceiver";private final String ACTION_BOOT = "android.intent.action.NEW_OUTGOING_CALL";TelephonyManager telMgr;@Overridepublic void onReceive(Context context, Intent intent) {mContext = context;String number = getNumberFromCallIntent(intent);final boolean isPotentialEmergencyNumber = isPotentialEmergencyNumber(number);if (ACTION_BOOT.equals(intent.getAction())){ android.util.Log.i(TAG,"-this-Emergency-is-"+isPotentialEmergencyNumber);if(isPotentialEmergencyNumber==true){Intent intent_Call = new Intent();intent_Call.setAction("com.xxx.xxxx_Call");context.sendBroadcast(intent_Call);return;}return;}telMgr = (TelephonyManager) context.getSystemService(Service.TELEPHONY_SERVICE);switch (telMgr.getCallState()) {case TelephonyManager.CALL_STATE_IDLE:Intent intent_Call = new Intent();intent_Call.setAction("com.xxx.xxxx_END");context.sendBroadcast(intent_Call);break;}}private boolean isPotentialEmergencyNumber(String number) {Log.v(TAG, "Checking restrictions for number : %s"+number);if (number == null) {android.util.Log.i(TAG,"--Emergency--number-----null-----");return false;}try {return mContext.getSystemService(TelephonyManager.class).isPotentialEmergencyNumber(number);} catch (Exception e) {Log.e(TAG,"isPotentialEmergencyNumber: Telephony threw an exception."+e);return false;}}private String getNumberFromCallIntent(Intent intent) {String number;number = getResultData();if (TextUtils.isEmpty(number)) {Log.w(TAG, "Empty number obtained from the call intent.");return null;}boolean isUriNumber = mPhoneNumberUtilsAdapter.isUriNumber(number);if (!isUriNumber) {number = mPhoneNumberUtilsAdapter.convertKeypadLettersToDigits(number);number = mPhoneNumberUtilsAdapter.stripSeparators(number);}return number;}
}
AndroidManifest.xml
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /><uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" /><receiver android:name="com.android.settings.NewOutgoingCallVoWIFIBroadcastIntentReceiver" ><intent-filter><action android:name="android.telephony.action.ACTION_CALL" /><action android:name="android.telephony.action.ACTION_CALL_PRIVILEGED" /><action android:name="android.telephony.action.ACTION_CALL_EMERGENCY" /><action android:name="android.intent.action.PHONE_STATE"/>intent-filter>receiver>
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!