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

台州路桥网站建设seowhy官网

台州路桥网站建设,seowhy官网,中国114黄页网站宣传广告,石家庄网站推广排名客户需求只允许通讯录中联系人可以呼入电话。参考自带的黑名单实现 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.mmbaike.com/news/37172.html

相关文章:

  • 如何建立企业网站或者官网快速网站排名提升
  • 网站模板psd百度小说排行榜第一名
  • 广告公司网站建设方案免费的网站推广平台
  • 建设手机网站费用吗站群优化公司
  • 深圳高端网站制作价格google引擎入口
  • 网站防止镜像菏泽seo
  • 做网站能带来什么优化网站搜索
  • 必须做网站等级保护在线seo关键词排名优化
  • 哪些网站做批发的本网站三天换一次域名
  • 东莞微信网站建设咨询建站系统源码
  • 宁河网站建设关键词优化推广排名多少钱
  • 网站设计好做吗百度广告价格
  • 公司注销后 网站备案吗网络营销试卷及答案
  • 环球广贸WordPress汕头seo网站推广
  • 用vs2008做网站视频教程长沙有实力的关键词优化价格
  • 网站设计论文题目2345中国最好的网址站
  • 建设网站所需资料安卓优化大师旧版本
  • 顺义广州网站建设女教师网课入06654侵录屏
  • 游戏娱乐网站建设seo经典案例分析
  • 昆山玉山网站建设拼多多商品关键词搜索排名
  • 建设一个能看视频的网站seo排名工具哪个好
  • 永泰县住房和城乡建设局网站西安分类信息seo公司
  • vs做网站怎么调试seo关键词怎么选择
  • 福田商城网站建设哪家公司靠谱做网络推广有哪些平台
  • 首京建设投资引导基金网站宝安网站建设
  • 做政务网站数据分析培训机构哪家好
  • 多语言做网站百度福州分公司
  • 国内有哪些比较好的做定制旅游网站百度热搜关键词排名优化
  • 重庆做网站开发的公司有哪些苏州整站优化
  • jsp编写网站google推广怎么做