当前位置: 首页 > news >正文

深圳极速网站建设推荐亿省心网站托管

深圳极速网站建设推荐,亿省心网站托管,网络服务与协议课件,蚌埠铁路建设监理公司网站客户需求只允许通讯录中联系人可以呼入电话。参考自带的黑名单实现 CallsManager.java类中的onSuccessfulIncomingCall方法有一些过滤器,可以仿照黑名单的方式添加自己的过滤器。 packages/services/Telecomm/src/com/android/server/telecom/CallsManager.java …

客户需求只允许通讯录中联系人可以呼入电话。参考自带的黑名单实现

  1. CallsManager.java类中的onSuccessfulIncomingCall方法有一些过滤器,可以仿照黑名单的方式添加自己的过滤器。

packages/services/Telecomm/src/com/android/server/telecom/CallsManager.java

+import com.android.server.telecom.callfiltering.AsyncContactCheckFilter;import java.util.ArrayList;import java.util.Collection;import java.util.Collections;
@@ -505,6 +507,7 @@ public class CallsManager extends Call.ListenerBasefilters.add(new AsyncBlockCheckFilter(mContext, new BlockCheckerAdapter()));filters.add(new CallScreeningServiceFilter(mContext, this, mPhoneAccountRegistrar,mDefaultDialerCache, new ParcelableCallUtils.Converter(), mLock));
+        filters.add(new AsyncContactCheckFilter(mContext));//mh@[非联系人挂断]new IncomingCallFilter(mContext, this, incomingCall, mLock,mTimeoutsAdapter, filters).performFiltering();}
  1. 实现过滤器

packages/services/Telecomm/src/com/android/server/telecom/callfiltering/AsyncContactCheckFilter.java

/** Copyright (C) 2016 The Android Open Source Project** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at**      http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License*/package com.android.server.telecom.callfiltering;import android.content.Context;
import android.os.AsyncTask;
import android.telecom.Log;import com.android.server.telecom.Call;
import com.android.server.telecom.LogUtils;
import android.net.Uri;
import android.database.Cursor;/*** An {@link AsyncTask} that checks if a call needs to be blocked.* <p> An {@link AsyncTask} is used to perform the block check to avoid blocking the main thread.* The block check itself is performed in the {@link AsyncTask#doInBackground(Object[])}.*/
public class AsyncContactCheckFilter extends AsyncTask<String, Void, Boolean>implements IncomingCallFilter.CallFilter {private final Context mContext;private Call mIncomingCall;private CallFilterResultCallback mCallback;public AsyncContactCheckFilter(Context context) {mContext = context;}@Overridepublic void startFilterLookup(Call call, CallFilterResultCallback callback) {mCallback = callback;mIncomingCall = call;String number = call.getHandle() == null ?null : call.getHandle().getSchemeSpecificPart();this.execute(number);}@Overrideprotected void onPreExecute() {}@Overrideprotected Boolean doInBackground(String... params) {try {return isContact(mContext, params[0]);} finally {}}@Overrideprotected void onPostExecute(Boolean isContact) {try {CallFilteringResult result;if (!isContact) {//非联系人直接挂断result = new CallFilteringResult(false, // shouldAllowCalltrue, //shouldRejectfalse, //shouldAddToCallLogfalse // shouldShowNotification);} else {result = new CallFilteringResult(true, // shouldAllowCallfalse, // shouldRejecttrue, // shouldAddToCallLogtrue // shouldShowNotification);}mCallback.onCallFilteringComplete(mIncomingCall, result);} finally {}}//联系人查询private boolean isContact(Context context, String phoneNum) {Uri uri = Uri.parse("content://com.android.contacts/data/phones/filter/" + phoneNum);Cursor cursor = context.getContentResolver().query(uri, new String[] {android.provider.ContactsContract.Data.DISPLAY_NAME}, null, null, null);boolean exists = false;if (cursor != null) {try {if(cursor.moveToFirst()){exists = true;String name = cursor.getString(0);Log.i("mh.log", "incoming phone is contact:" + name);}} catch (Exception e) {e.printStackTrace();} finally {cursor.close();}}return exists;}
}
  1. 可以添加一个开关,这里使用Settings的方式,也可以用广播。

frameworks/base/packages/SettingsProvider/res/values/defaults.xml

+    <!--mh@ phone blocker -->
+    <bool name="xc_unknow_incall_switch">false</bool>

frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java

@@ -2355,6 +2355,10 @@ class DatabaseHelper extends SQLiteOpenHelper {R.bool.def_screen_brightness_automatic_mode);loadDefaultAnimationSettings(stmt);
+            
+            //mh@{
+            loadBooleanSetting(stmt, "xc_unknow_incall_blocker",
+                    R.bool.xc_unknow_incall_switch);
+ 			 //mh@}

再修改一下CallsManager.java

public void onSuccessfulIncomingCall(Call incomingCall) {Log.d(this, "onSuccessfulIncomingCall");if (incomingCall.hasProperty(Connection.PROPERTY_EMERGENCY_CALLBACK_MODE)) {Log.i(this, "Skipping call filtering due to ECBM");onCallFilteringComplete(incomingCall, new CallFilteringResult(true, false, true, true));return;}List<IncomingCallFilter.CallFilter> filters = new ArrayList<>();filters.add(new DirectToVoicemailCallFilter(mCallerInfoLookupHelper));filters.add(new AsyncBlockCheckFilter(mContext, new BlockCheckerAdapter()));filters.add(new CallScreeningServiceFilter(mContext, this, mPhoneAccountRegistrar,mDefaultDialerCache, new ParcelableCallUtils.Converter(), mLock));//mh@{boolean blocker = Settings.System.getInt(mContext.getContentResolver(), "xc_unknow_incall_blocker", 0) == 1;if(blocker) {filters.add(new AsyncContactCheckFilter(mContext));//mh@[非联系人挂断]}//mh@}new IncomingCallFilter(mContext, this, incomingCall, mLock,mTimeoutsAdapter, filters).performFiltering();}
http://www.yayakq.cn/news/932474/

相关文章:

  • 建设网站的报价wordpress 增加菜单
  • 阿里云腾讯云网站建设网站建设朝阳
  • 企业培训课程推荐做一网站优化要多少钱
  • 常州网站建设最易如何建设网站简介
  • 常州网站制作哪家好电子商务网站建设与维护书
  • 安宁市建设局网站seo什么意思
  • 面料 做网站wordpress重装后404
  • 免费外贸自建网站苏州朗冠网站建设公司
  • 怎么做网站推广怀化汕头建设企业网站
  • 聊城集团网站建设加盟网页版代码编辑器
  • 网站推广排名收费标准我想做社区团购怎么做
  • 东莞清溪镇做网站公司花都做网站公司
  • 广西城乡住房建设部网站岷县城乡建设局网站
  • 做营销网站seo外贸网站建设 翻译
  • 思政网站建设管理自查报告网站建设汇报稿
  • 如何成立一个房产网站wordpress插件 connect
  • 网站建设项目推文网站建设需要哪些人员
  • 如何自己制作首页网站网站建设陕西
  • 南京医院手机网站建设html 网站建设中
  • 网站程序安装当前网站开发什么语言
  • 个人商城网站怎么做做网站前需要准备什么
  • 福州企业网站维护价格低360搜索建站公司
  • 东莞九江网站制作内蒙古网站建设百度
  • 广州网站建设信息科技有限公司公司做网站注意事项
  • 电子商务网站基本功能做外汇的网站
  • 求网站制作聊城专业网站建设公司
  • 阿里云网站目录微信云开发文档
  • 网站制作策划住房和城乡建设厅证书查询网
  • 化妆品成品网站河北建设局网站
  • 凤岗镇网站仿做如何在wordpress中添加背景音乐? |