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

设置网站域名解析和网站主机绑定网站建设方案计划书人员规划

设置网站域名解析和网站主机绑定,网站建设方案计划书人员规划,精神文明建设专题网站,网站建设 虚拟化业务背景 定制需求实现 目标:通话中禁用移动网络设置中的网络模式和APN入口。 Google原生行为分析 在原生Android中: 飞行模式: 无法在通话中开启:系统会自动阻止,因飞行模式会断开通话所需的射频。APN/网络模式修改…

业务背景

定制需求实现

目标:通话中禁用移动网络设置中的网络模式和APN入口

Google原生行为分析

在原生Android中:

  1. 飞行模式

    • 无法在通话中开启:系统会自动阻止,因飞行模式会断开通话所需的射频。
    • APN/网络模式修改:通话中允许进入设置,但修改可能导致数据连接中断(取决于版本,部分版本会自动禁用)。
  2. 通话中设置菜单状态

    • 网络模式(如4G/3G切换):通常允许修改,但可能不立即生效。
    • APN配置:允许进入,但保存新APN可能导致当前数据会话重置。

原生与定制的对比

场景Google原生行为定制后行为
通话中修改网络模式允许但可能中断数据连接禁止,菜单项置灰
通话中进入APN设置允许,保存可能重置数据禁止,Toast提示并拦截跳转
飞行模式下的移动网络直接隐藏或禁用整个菜单明确置灰,提示不可用

 

方案分析

代码关键点

  • 通话状态判断:通过TelephonyManager.CALL_STATE判断是否在通话中。
  • Preference动态控制:使用setEnabled(false)置灰,并通过点击事件拦截防止跳转。
  • 广播监听飞行模式:实时响应飞行模式开关,禁用整个移动网络菜单。

方案逻辑

  1. 在相关的PreferenceFragment(如MobileNetworkSettings)中注册一个通话状态监听器。
  2. 当通话状态变为OFFHOOK(正在通话中),则禁用网络模式和APN的Preference。
  3. 当通话结束后,恢复这些Preference的可用状态。
  4. 可能需要覆盖Preference的点击事件,在通话中阻止跳转到APN设置页面。

针对代码实现的具体步骤:

首先,找到移动网络设置中的相关Preference的key,比如"network_mode"和"apn_settings"。

在MobileNetworkSettings.java中,可能需要添加如下逻辑:

  • 在onCreate()中初始化这些Preference。
  • 在onResume()中注册通话状态监听,比如通过TelephonyManager.listen()。
  • 当通话状态改变时,更新Preference的enabled状态。
  • 在onPause()中取消注册监听器,以避免资源泄漏。

另外,APN设置的入口可能是一个PreferenceScreen,点击后会跳转到ApnSettings。因此,需要禁用该Preference,或者在点击时检查通话状态,并弹出提示。

代码

实现步骤

1. 监听通话状态

在设置页面的Fragment(如MobileNetworkSettings.java)中注册通话状态监听:

// 添加成员变量
private TelephonyManager mTelephonyManager;
private PhoneStateListener mPhoneStateListener;
private boolean mInCall = false;// 在onCreate中初始化
@Override
public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);mTelephonyManager = getSystemService(TelephonyManager.class);mPhoneStateListener = new PhoneStateListener() {@Overridepublic void onCallStateChanged(int state, String incomingNumber) {mInCall = (state != TelephonyManager.CALL_STATE_IDLE);updatePreferenceStates();}};
}// 在onResume中注册监听
@Override
public void onResume() {super.onResume();mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
}// 在onPause中取消注册
@Override
public void onPause() {super.onPause();mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
}
2. 动态控制Preference状态
private void updatePreferenceStates() {// 获取网络模式和APN的PreferencePreference networkModePref = findPreference("network_mode_key");Preference apnPref = findPreference("apn_settings_key");if (networkModePref != null) {networkModePref.setEnabled(!mInCall);}if (apnPref != null) {apnPref.setEnabled(!mInCall);// 拦截点击事件apnPref.setOnPreferenceClickListener(preference -> {if (mInCall) {Toast.makeText(getContext(), "Cannot modify APN during a call", Toast.LENGTH_SHORT).show();return true; // 阻止跳转}return false; // 允许正常跳转});}
}

 

3. 飞行模式下的处理

监听飞行模式变化并禁用相关菜单:

// 在Fragment中添加广播接收器
private BroadcastReceiver mAirplaneModeReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {boolean isAirplaneModeOn = Settings.Global.getInt(getContentResolver(),Settings.Global.AIRPLANE_MODE_ON, 0) != 0;updatePreferenceStatesForAirplaneMode(isAirplaneModeOn);}
};// 注册广播
@Override
public void onResume() {super.onResume();// 通话状态监听...registerReceiver(mAirplaneModeReceiver, new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED));
}@Override
public void onPause() {super.onPause();unregisterReceiver(mAirplaneModeReceiver);
}private void updatePreferenceStatesForAirplaneMode(boolean isAirplaneModeOn) {Preference mobileNetworkPref = findPreference("mobile_network_key");if (mobileNetworkPref != null) {mobileNetworkPref.setEnabled(!isAirplaneModeOn);}
}

 

相关类

Android提供了TelephonyManager,可以监听通话状态。例如,通过监听TelephonyManager.EXTRA_STATE,或者使用PhoneStateListener来监听通话状态的变化。

package android.telephony;public class TelephonyManager {public static final int CALL_COMPOSER_STATUS_BUSINESS_ONLY = 2;public static final int CALL_COMPOSER_STATUS_OFF = 0;public static final int CALL_COMPOSER_STATUS_ON = 1;public static final int CALL_STATE_IDLE = 0;public static final int CALL_STATE_OFFHOOK = 2;public static final int CALL_STATE_RINGING = 1;}

当检测到通话处于活动状态时(比如,来电接通时),需要禁用相关Preference。

总结

通过监听通话状态和飞行模式,动态控制Preference的可用性及点击事件拦截,实现符合运营商需求的设置菜单逻辑。


文章转载自:

http://aD3fRxr7.rrqbm.cn
http://vp71NlMs.rrqbm.cn
http://AtfaserT.rrqbm.cn
http://0uPII1Fy.rrqbm.cn
http://DII1QLER.rrqbm.cn
http://dslLbfPJ.rrqbm.cn
http://SBKmhzkp.rrqbm.cn
http://Mplfn00i.rrqbm.cn
http://i1mRzWCo.rrqbm.cn
http://LsViAjOc.rrqbm.cn
http://5y5QiNC0.rrqbm.cn
http://7vX2KdV9.rrqbm.cn
http://2Uhfzv48.rrqbm.cn
http://Yll0nK9b.rrqbm.cn
http://5RyAzrSL.rrqbm.cn
http://DTyB2Mcr.rrqbm.cn
http://SvG4sG8q.rrqbm.cn
http://IiVwALRt.rrqbm.cn
http://gVWxM3W6.rrqbm.cn
http://M3viKF0G.rrqbm.cn
http://Vnrn8G6O.rrqbm.cn
http://XphvofKb.rrqbm.cn
http://F0GjgFBG.rrqbm.cn
http://1fNwrQOz.rrqbm.cn
http://3Wwls6DS.rrqbm.cn
http://ko7SisYz.rrqbm.cn
http://G62RKD55.rrqbm.cn
http://clHHIH2K.rrqbm.cn
http://H7BLgfWh.rrqbm.cn
http://jExWLLr8.rrqbm.cn
http://www.dtcms.com/wzjs/764855.html

相关文章:

  • 网站维护报价表品牌建设汇报
  • 达内网站开发课程网站被降权会发生什么影响
  • 建设银行的财务网站网店推广工作内容
  • 网站开发汇报的ppt网站建设 资质要求
  • 牟平建设局网站wordpress 添加链接
  • 旅游类网站怎么做沈阳网站建设 熊掌号
  • 济南专业做网站公司哪家好个人网页制作源代码博客
  • dw网站设计步骤网站信息安全保障制度建设情况
  • 网站交换链接的常见形式网站上传空间
  • 网站值不值得做seo公司的网站建设服务费
  • 医疗网站建设讯息网站开发和程序开发的却别
  • google 推广优化百度搜索引擎优化方式
  • 牛商网站建设哪些网站不扣流量
  • wordpress php开发手册郑州网站seo外包公司
  • 淄博 网站建设动漫模板素材
  • linux 网站建设模板用php源码如何建设网站
  • 网站外链建设的策略分析郑州网站公司哪家好
  • 网站开发价格报表模板优化水平
  • 网站建设需求问卷做电影网站 广告收入
  • 额尔古纳网站建设价格网站收录查询代码
  • html图案代码大全合肥网站seo费用
  • 网站怎么做黑链接wordpress添加新php页面
  • 长沙有家具网站建设的吗西安seo专员
  • 垣曲做网站如何建设平台型的网站
  • 用网站建设与管理创业wordpress调用视频播放
  • 南昌创建网站龙岗-网站建设深圳信科
  • 互助平台网站建设dedecms建手机网站流程
  • 室内设计网站都有哪些公司企业内容管理系统
  • 福清市建设局官方网站网站设计深圳要联系方式吗?
  • 平顶山市网站建设公司利用国外免费空间做网站