CallSetting分析
通话设置应用的入口在CallFeatureSetting.java类中,
package com.android.phone可以看出通话设置在Phone进程中@Override
//点击事件发生后调用的函数,不用注册监听器public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {if (preference == mButtonAutoRetry) {//自动重拨的按钮选项android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(),android.provider.Settings.Global.CALL_AUTO_RETRY,mButtonAutoRetry.isChecked() ? 1 : 0);
//这是系统设置数据库,里面的数据供其它apk使用return true;//true表示不跳转默认动作}return false;}
@Overridepublic boolean onPreferenceChange(Preference preference, Object objValue) {if (preference == mEnableVideoCalling) {if (ImsManager.isEnhanced4gLteModeSettingEnabledByUser(mPhone.getContext())) {PhoneGlobals.getInstance().phoneMgr.enableVideoCalling((boolean) objValue);} else {//开启数据开关的提示框AlertDialog.Builder builder = new AlertDialog.Builder(this);DialogInterface.OnClickListener networkSettingsClickListener =new Dialog.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {startActivity(new Intent(mPhone.getContext(),//开启数据的界面com.android.phone.MobileNetworkSettings.class));}};builder.setMessage(getResources().getString(R.string.enable_video_calling_dialog_msg)).setNeutralButton(getResources().getString(R.string.enable_video_calling_dialog_settings),networkSettingsClickListener).setPositiveButton(android.R.string.ok, null).show();return false;//结果不写入sharedpreference}}
protected void onCreate(Bundle icicle) {super.onCreate(icicle);// Make sure we are running as an admin user.mSubscriptionInfoHelper = new SubscriptionInfoHelper(this, getIntent());mPhone = mSubscriptionInfoHelper.getPhone();//得到phone实例mTelecomManager = TelecomManager.from(this);}
private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {@Overridepublic void onCallStateChanged(int state, String incomingNumber) {if (mEnableVideoCalling != null) {
//当state状态变为CALL_STATE_IDLE时开启视屏通话mEnableVideoCalling.setEnabled(state == TelephonyManager.CALL_STATE_IDLE);}}};
@Overrideprotected void onResume() {super.onResume();PreferenceScreen preferenceScreen = getPreferenceScreen();if (preferenceScreen != null) {preferenceScreen.removeAll();}//通话设置的主界面addPreferencesFromResource(R.xml.call_feature_setting);
//得到telephonyManager的服务,并注册监听器TelephonyManager telephonyManager =(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);telephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);Preference phoneAccountSettingsPreference = findPreference
(PHONE_ACCOUNT_SETTINGS_KEY);//关联着phoneAccountSettingsFragment界面if (telephonyManager.isMultiSimEnabled() || !SipUtil.isVoipSupported(mPhone.getContext())) {getPreferenceScreen().removePreference(phoneAccountSettingsPreference);}PreferenceScreen prefSet = getPreferenceScreen();mVoicemailSettingsScreen = (PreferenceScreen) findPreference(VOICEMAIL_SETTING_SCREEN_PREF_KEY);mVoicemailSettingsScreen.setIntent(mSubscriptionInfoHelper.getIntent(VoicemailSettingsActivity.class));maybeHideVoicemailSettings();mButtonAutoRetry = (SwitchPreference) findPreference(BUTTON_RETRY_KEY);mEnableVideoCalling = (SwitchPreference) findPreference(ENABLE_VIDEO_CALLING_KEY);//得到phone设置配置,PersistableBundle 为打包数据类型PersistableBundle carrierConfig =PhoneGlobals.getInstance().getCarrierConfigForSubId(mPhone.getSubId());
//读取配置文件的KEY_AUTO_RETRY_ENABLED_BOOLif (carrierConfig.getBoolean(CarrierConfigManager.KEY_AUTO_RETRY_ENABLED_BOOL)) {mButtonAutoRetry.setOnPreferenceChangeListener(this);int autoretry = Settings.Global.getInt(getContentResolver(), Settings.Global.CALL_AUTO_RETRY, 0);mButtonAutoRetry.setChecked(autoretry != 0);} else {prefSet.removePreference(mButtonAutoRetry);mButtonAutoRetry = null;}Preference cdmaOptions = prefSet.findPreference(BUTTON_CDMA_OPTIONS);Preference gsmOptions = prefSet.findPreference(BUTTON_GSM_UMTS_OPTIONS);Preference fdnButton = prefSet.findPreference(BUTTON_FDN_KEY);fdnButton.setIntent(mSubscriptionInfoHelper.getIntent(FdnSetting.class));if (carrierConfig.getBoolean(CarrierConfigManager.KEY_WORLD_PHONE_BOOL)) {cdmaOptions.setIntent(mSubscriptionInfoHelper.getIntent(CdmaCallOptions.class));gsmOptions.setIntent(mSubscriptionInfoHelper.getIntent(GsmUmtsCallOptions.class));} else {prefSet.removePreference(cdmaOptions);prefSet.removePreference(gsmOptions);int phoneType = mPhone.getPhoneType();if (carrierConfig.getBoolean(CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL)) {prefSet.removePreference(fdnButton);} else {if (phoneType == PhoneConstants.PHONE_TYPE_CDMA) {prefSet.removePreference(fdnButton);if (!carrierConfig.getBoolean(CarrierConfigManager.KEY_VOICE_PRIVACY_DISABLE_UI_BOOL)) {addPreferencesFromResource(R.xml.cdma_call_privacy);}} else if (phoneType == PhoneConstants.PHONE_TYPE_GSM) {if (carrierConfig.getBoolean(CarrierConfigManager.KEY_ADDITIONAL_CALL_SETTING_BOOL)) {addPreferencesFromResource(R.xml.gsm_umts_call_options);
//补充业务初始化,getIntent操作GsmUmtsCallOptions.init(prefSet, mSubscriptionInfoHelper);}} else {throw new IllegalStateException("Unexpected phone type: " + phoneType);}}}if (ImsManager.isVtEnabledByPlatform(mPhone.getContext()) &&ImsManager.isVtProvisionedOnDevice(mPhone.getContext()) &&(carrierConfig.getBoolean( CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS)|| mPhone.mDcTracker.isDataEnabled())) {boolean currentValue =ImsManager.isEnhanced4gLteModeSettingEnabledByUser(mPhone.getContext())? PhoneGlobals.getInstance().phoneMgr.isVideoCallingEnabled(getOpPackageName()) : false;mEnableVideoCalling.setChecked(currentValue);mEnableVideoCalling.setOnPreferenceChangeListener(this);} else {prefSet.removePreference(mEnableVideoCalling);}
//支持volte并支持volte TTYif (ImsManager.isVolteEnabledByPlatform(this) &&!carrierConfig.getBoolean(CarrierConfigManager.KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL)) {TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);/* tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE); */}Preference wifiCallingSettings = findPreference(getResources().getString(R.string.wifi_calling_settings_key));final PhoneAccountHandle simCallManager = mTelecomManager.getSimCallManager();if (simCallManager != null) {//含有sim卡Intent intent = PhoneAccountSettingsFragment.buildPhoneAccountConfigureIntent ( this, simCallManager);if (intent != null) {PackageManager pm = mPhone.getContext().getPackageManager();List<ResolveInfo> resolutions = pm.queryIntentActivities(intent, 0);if (!resolutions.isEmpty()) {wifiCallingSettings.setTitle(resolutions.get(0).loadLabel(pm));wifiCallingSettings.setSummary(null);wifiCallingSettings.setIntent(intent);} else {prefSet.removePreference(wifiCallingSettings);}} else {prefSet.removePreference(wifiCallingSettings);}//平台是否支持Wifi_Call} else if (!ImsManager.isWfcEnabledByPlatform(mPhone.getContext()) ||!ImsManager.isWfcProvisionedOnDevice(mPhone.getContext())) {prefSet.removePreference(wifiCallingSettings);} else {int resId = com.android.internal.R.string.wifi_calling_off_summary;if (ImsManager.isWfcEnabledByUser(mPhone.getContext())) {boolean isRoaming = telephonyManager.isNetworkRoaming();int wfcMode = ImsManager.getWfcMode(mPhone.getContext(), isRoaming);switch (wfcMode) {case ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY:resId = com.android.internal.R.string.wfc_mode_wifi_only_summary;break;case ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED:resId = com.android.internal.R.string.wfc_mode_cellular_preferred_summary;//cellular为4g版本break;case ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED:resId = com.android.internal.R.string.wfc_mode_wifi_preferred_summary;break;default:if (DBG) log("Unexpected WFC mode value: " + wfcMode);}}wifiCallingSettings.setSummary(resId);}}
@Override//单例模式中唤起activity调用此函数,而不是再create一个protected void onNewIntent(Intent newIntent) {setIntent(newIntent);//一般重复onCreate中的函数mSubscriptionInfoHelper = new SubscriptionInfoHelper(this, getIntent());mSubscriptionInfoHelper.setActionBarTitle(getActionBar(), getResources(), R.string.call_settings_with_label);mPhone = mSubscriptionInfoHelper.getPhone();}
private void maybeHideVoicemailSettings() {String defaultDialer = getSystemService(TelecomManager.class).getDefaultDialerPackage();if (defaultDialer == null) {return;}try {Bundle metadata = getPackageManager().getApplicationInfo(defaultDialer,PackageManager.GET_META_DATA).metaData;if (metadata == null) {return;}if (!metadata.getBoolean(TelephonyManager.METADATA_HIDE_VOICEMAIL_SETTINGS_MENU, false)) {if (DBG) {log("maybeHideVoicemailSettings(): not disabled by default dialer");}return;}getPreferenceScreen().removePreference(mVoicemailSettingsScreen);if (DBG) {log("maybeHideVoicemailSettings(): disabled by default dialer");}} catch (NameNotFoundException e) {// do nothingif (DBG) {log("maybeHideVoicemailSettings(): not controlled by default dialer");}}}
关于PhoneAccountSettingsFragment public class PhoneAccountSettingsFragment extends PreferenceFragmentimplements Preference.OnPreferenceChangeListener,AccountSelectionPreference.AccountSelectionListener {private static final String ACCOUNTS_LIST_CATEGORY_KEY ="phone_accounts_accounts_list_category_key";private static final String DEFAULT_OUTGOING_ACCOUNT_KEY = "default_outgoing_account";private static final String ALL_CALLING_ACCOUNTS_KEY = "phone_account_all_calling_accounts";private static final String SIP_SETTINGS_CATEGORY_PREF_KEY ="phone_accounts_sip_settings_category_key";private static final String USE_SIP_PREF_KEY = "use_sip_calling_options_key";private static final String SIP_RECEIVE_CALLS_PREF_KEY = "sip_receive_calls_key";private static final String LEGACY_ACTION_CONFIGURE_PHONE_ACCOUNT ="android.telecom.action.CONNECTION_SERVICE_CONFIGURE";private static final int ACCOUNT_ORDERING_START_VALUE = 100;private static final String LOG_TAG = PhoneAccountSettingsFragment.class.getSimpleName();private TelecomManager mTelecomManager;private TelephonyManager mTelephonyManager;private SubscriptionManager mSubscriptionManager;private PreferenceCategory mAccountList;private AccountSelectionPreference mDefaultOutgoingAccount;private ListPreference mUseSipCalling;private SwitchPreference mSipReceiveCallsPreference;private SipPreferences mSipPreferences;@Overridepublic void onCreate(Bundle icicle) {super.onCreate(icicle);mTelecomManager = TelecomManager.from(getActivity());mTelephonyManager = TelephonyManager.from(getActivity());mSubscriptionManager = SubscriptionManager.from(getActivity());}@Overridepublic void onResume() {super.onResume();if (getPreferenceScreen() != null) {getPreferenceScreen().removeAll();}addPreferencesFromResource(R.xml.phone_account_settings);/*** Here we make decisions about what we will and will not display with regards to phone-* account settings. The basic settings structure is this:* (1) <Make Calls With...> // Lets user pick a default account for outgoing calls* (2) <Account List>* <Account>* ...* <Account>* </Account List>* (3) <All Accounts> // Lets user enable/disable third-party accounts. SIM-based accounts* // are always enabled and so aren't relevant here.** Here are the rules that we follow:* - (1) is only shown if there are multiple enabled accounts, including SIM accounts.* This can be 2+ SIM accounts, 2+ third party accounts or any combination.* - (2) The account list only lists (a) enabled third party accounts and (b) SIM-based* accounts. However, for single-SIM devices, if the only account to show is the* SIM-based account, we don't show the list at all under the assumption that the user* already knows about the account.* - (3) Is only shown if there exist any third party accounts. If none exist, then the* option is hidden since there is nothing that can be done in it.** By far, the most common case for users will be the single-SIM device without any* third party accounts. IOW, the great majority of users won't see any of these options.*/mAccountList = (PreferenceCategory) getPreferenceScreen().findPreference(ACCOUNTS_LIST_CATEGORY_KEY);List<PhoneAccountHandle> allNonSimAccounts =getCallingAccounts(false /* includeSims */, true /* includeDisabled */);// Check to see if we should show the entire section at all.if (shouldShowConnectionServiceList(allNonSimAccounts)) {List<PhoneAccountHandle> enabledAccounts =getCallingAccounts(true /* includeSims */, false /* includeDisabled */);// Initialize the account list with the set of enabled & SIM accounts.initAccountList(enabledAccounts);mDefaultOutgoingAccount = (AccountSelectionPreference)getPreferenceScreen().findPreference(DEFAULT_OUTGOING_ACCOUNT_KEY);mDefaultOutgoingAccount.setListener(this);// Only show the 'Make Calls With..." option if there are multiple accounts.if (enabledAccounts.size() > 1) {updateDefaultOutgoingAccountsModel();} else {mAccountList.removePreference(mDefaultOutgoingAccount);}Preference allAccounts = getPreferenceScreen().findPreference(ALL_CALLING_ACCOUNTS_KEY);// If there are no third party (nonSim) accounts, then don't show enable/disable dialog.if (allNonSimAccounts.isEmpty() && allAccounts != null) {mAccountList.removePreference(allAccounts);}} else {getPreferenceScreen().removePreference(mAccountList);}if (isPrimaryUser() && SipUtil.isVoipSupported(getActivity())) {mSipPreferences = new SipPreferences(getActivity());mUseSipCalling = (ListPreference)getPreferenceScreen().findPreference(USE_SIP_PREF_KEY);mUseSipCalling.setEntries(!SipManager.isSipWifiOnly(getActivity())? R.array.sip_call_options_wifi_only_entries: R.array.sip_call_options_entries);mUseSipCalling.setOnPreferenceChangeListener(this);int optionsValueIndex =mUseSipCalling.findIndexOfValue(mSipPreferences.getSipCallOption());if (optionsValueIndex == -1) {// If the option is invalid (eg. deprecated value), default to SIP_ADDRESS_ONLY.mSipPreferences.setSipCallOption(getResources().getString(R.string.sip_address_only));optionsValueIndex =mUseSipCalling.findIndexOfValue(mSipPreferences.getSipCallOption());}mUseSipCalling.setValueIndex(optionsValueIndex);mUseSipCalling.setSummary(mUseSipCalling.getEntry());mSipReceiveCallsPreference = (SwitchPreference)getPreferenceScreen().findPreference(SIP_RECEIVE_CALLS_PREF_KEY);mSipReceiveCallsPreference.setEnabled(SipUtil.isPhoneIdle(getActivity()));mSipReceiveCallsPreference.setChecked(mSipPreferences.isReceivingCallsEnabled());mSipReceiveCallsPreference.setOnPreferenceChangeListener(this);} else {getPreferenceScreen().removePreference(getPreferenceScreen().findPreference(SIP_SETTINGS_CATEGORY_PREF_KEY));}}/*** Handles changes to the preferences.** @param pref The preference changed.* @param objValue The changed value.* @return True if the preference change has been handled, and false otherwise.*/@Overridepublic boolean onPreferenceChange(Preference pref, Object objValue) {if (pref == mUseSipCalling) {String option = objValue.toString();mSipPreferences.setSipCallOption(option);mUseSipCalling.setValueIndex(mUseSipCalling.findIndexOfValue(option));mUseSipCalling.setSummary(mUseSipCalling.getEntry());return true;} else if (pref == mSipReceiveCallsPreference) {final boolean isEnabled = !mSipReceiveCallsPreference.isChecked();new Thread(new Runnable() {public void run() {handleSipReceiveCallsOption(isEnabled);}}).start();return true;}return false;}/*** Handles a phone account selection for the default outgoing phone account.** @param pref The account selection preference which triggered the account selected event.* @param account The account selected.* @return True if the account selection has been handled, and false otherwise.*/@Overridepublic boolean onAccountSelected(AccountSelectionPreference pref, PhoneAccountHandle account) {if (pref == mDefaultOutgoingAccount) {mTelecomManager.setUserSelectedOutgoingPhoneAccount(account);return true;}return false;}/*** Repopulate the dialog to pick up changes before showing.** @param pref The account selection preference dialog being shown.*/@Overridepublic void onAccountSelectionDialogShow(AccountSelectionPreference pref) {if (pref == mDefaultOutgoingAccount) {updateDefaultOutgoingAccountsModel();}}@Overridepublic void onAccountChanged(AccountSelectionPreference pref) {}private synchronized void handleSipReceiveCallsOption(boolean isEnabled) {Context context = getActivity();if (context == null) {// Return if the fragment is detached from parent activity before executed by thread.return;}mSipPreferences.setReceivingCallsEnabled(isEnabled);SipUtil.useSipToReceiveIncomingCalls(context, isEnabled);// Restart all Sip services to ensure we reflect whether we are receiving calls.SipAccountRegistry sipAccountRegistry = SipAccountRegistry.getInstance();sipAccountRegistry.restartSipService(context);}/*** Queries the telcomm manager to update the default outgoing account selection preference* with the list of outgoing accounts and the current default outgoing account.*/private void updateDefaultOutgoingAccountsModel() {mDefaultOutgoingAccount.setModel(mTelecomManager,getCallingAccounts(true /* includeSims */, false /* includeDisabled */),mTelecomManager.getUserSelectedOutgoingPhoneAccount(),getString(R.string.phone_accounts_ask_every_time));}private void initAccountList(List<PhoneAccountHandle> enabledAccounts) {boolean isMultiSimDevice = mTelephonyManager.isMultiSimEnabled();// On a single-SIM device, do not list any accounts if the only account is the SIM-based// one. This is because on single-SIM devices, we do not expose SIM settings through the// account listing entry so showing it does nothing to help the user. Nor does the lack of// action match the "Settings" header above the listing.if (!isMultiSimDevice && getCallingAccounts(false /* includeSims */, false /* includeDisabled */).isEmpty()){return;}// Obtain the list of phone accounts.List<PhoneAccount> accounts = new ArrayList<>();for (PhoneAccountHandle handle : enabledAccounts) {PhoneAccount account = mTelecomManager.getPhoneAccount(handle);if (account != null) {accounts.add(account);}}// Sort the accounts according to how we want to display them.Collections.sort(accounts, new Comparator<PhoneAccount>() {@Overridepublic int compare(PhoneAccount account1, PhoneAccount account2) {int retval = 0;// SIM accounts go firstboolean isSim1 = account1.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION);boolean isSim2 = account2.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION);if (isSim1 != isSim2) {retval = isSim1 ? -1 : 1;}int subId1 = mTelephonyManager.getSubIdForPhoneAccount(account1);int subId2 = mTelephonyManager.getSubIdForPhoneAccount(account2);if (subId1 != SubscriptionManager.INVALID_SUBSCRIPTION_ID &&subId2 != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {retval = (mSubscriptionManager.getSlotIndex(subId1) <mSubscriptionManager.getSlotIndex(subId2)) ? -1 : 1;}// Then order by packageif (retval == 0) {String pkg1 = account1.getAccountHandle().getComponentName().getPackageName();String pkg2 = account2.getAccountHandle().getComponentName().getPackageName();retval = pkg1.compareTo(pkg2);}// Finally, order by labelif (retval == 0) {String label1 = nullToEmpty(account1.getLabel().toString());String label2 = nullToEmpty(account2.getLabel().toString());retval = label1.compareTo(label2);}// Then by hashcodeif (retval == 0) {retval = account1.hashCode() - account2.hashCode();}return retval;}});int order = ACCOUNT_ORDERING_START_VALUE;// Add an entry for each account.for (PhoneAccount account : accounts) {PhoneAccountHandle handle = account.getAccountHandle();Intent intent = null;// SIM phone accounts use a different setting intent and are thus handled differently.if (account.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION)) {// For SIM-based accounts, we only expose the settings through the account list// if we are on a multi-SIM device. For single-SIM devices, the settings are// more spread out so there is no good single place to take the user, so we don't.if (isMultiSimDevice) {SubscriptionInfo subInfo = mSubscriptionManager.getActiveSubscriptionInfo(mTelephonyManager.getSubIdForPhoneAccount(account));if (subInfo != null) {intent = new Intent(TelecomManager.ACTION_SHOW_CALL_SETTINGS);intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);SubscriptionInfoHelper.addExtrasToIntent(intent, subInfo);}}} else {intent = buildPhoneAccountConfigureIntent(getActivity(), handle);}// Create the preference & add the labelPreference accountPreference = new Preference(getActivity());CharSequence accountLabel = account.getLabel();boolean isSimAccount =account.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION);accountPreference.setTitle((TextUtils.isEmpty(accountLabel) && isSimAccount)? getString(R.string.phone_accounts_default_account_label) : accountLabel);// Add an icon.Icon icon = account.getIcon();if (icon != null) {accountPreference.setIcon(icon.loadDrawable(getActivity()));}// Add an intent to send the user to the account's settings.if (intent != null) {accountPreference.setIntent(intent);}accountPreference.setOrder(order++);mAccountList.addPreference(accountPreference);}}private boolean shouldShowConnectionServiceList(List<PhoneAccountHandle> allNonSimAccounts) {return mTelephonyManager.isMultiSimEnabled() || allNonSimAccounts.size() > 0;}private List<PhoneAccountHandle> getCallingAccounts(boolean includeSims, boolean includeDisabledAccounts) {PhoneAccountHandle emergencyAccountHandle = getEmergencyPhoneAccount();List<PhoneAccountHandle> accountHandles =mTelecomManager.getCallCapablePhoneAccounts(includeDisabledAccounts);for (Iterator<PhoneAccountHandle> i = accountHandles.iterator(); i.hasNext();) {PhoneAccountHandle handle = i.next();if (handle.equals(emergencyAccountHandle)) {// never include emergency call accounts in this piece of code.i.remove();continue;}PhoneAccount account = mTelecomManager.getPhoneAccount(handle);if (account == null) {i.remove();} else if (!includeSims &&account.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION)) {i.remove();}}return accountHandles;}private String nullToEmpty(String str) {return str == null ? "" : str;}private PhoneAccountHandle getEmergencyPhoneAccount() {return PhoneUtils.makePstnPhoneAccountHandleWithPrefix((Phone) null, "" /* prefix */, true /* isEmergency */);}public static Intent buildPhoneAccountConfigureIntent(Context context, PhoneAccountHandle accountHandle) {Intent intent = buildConfigureIntent(context, accountHandle, TelecomManager.ACTION_CONFIGURE_PHONE_ACCOUNT);if (intent == null) {// If the new configuration didn't work, try the old configuration intent.intent = buildConfigureIntent(context, accountHandle, LEGACY_ACTION_CONFIGURE_PHONE_ACCOUNT);if (intent != null) {Log.w(LOG_TAG, "Phone account using old configuration intent: " + accountHandle);}}return intent;}private static Intent buildConfigureIntent(Context context, PhoneAccountHandle accountHandle, String actionStr) {if (accountHandle == null || accountHandle.getComponentName() == null ||TextUtils.isEmpty(accountHandle.getComponentName().getPackageName())) {return null;}// Build the settings intent.Intent intent = new Intent(actionStr);intent.setPackage(accountHandle.getComponentName().getPackageName());intent.addCategory(Intent.CATEGORY_DEFAULT);intent.putExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, accountHandle);// Check to see that the phone account package can handle the setting intent.PackageManager pm = context.getPackageManager();List<ResolveInfo> resolutions = pm.queryIntentActivities(intent, 0);if (resolutions.size() == 0) {intent = null; // set no intent if the package cannot handle it.}return intent;}/*** @return Whether the current user is the primary user.*/private boolean isPrimaryUser() {final UserManager userManager = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);return userManager.isPrimaryUser();}
}
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- Leetcode算法Java全解答--41. 缺失的第一个正数
Leetcode算法Java全解答–41. 缺失的第一个正数 文章目录Leetcode算法Java全解答--41. 缺失的第一个正数题目想法结果总结代码我的答案大佬们的答案测试用例其他 题目 给定一个未排序的整数数组,找出其中没有出现的最小的正整数。 说明: 你的算法的时间复杂度应为O(n),并且只…...
2024/4/13 10:37:43 - 游戏王NBX和动感白金组合完整版下载
NBX是一款模拟游戏王决斗工具,通过QQ软件:同好友或QQ群进行游戏决斗。 平台上对卡处理都是手动按菜单处理的,操作上都是按照游戏王规则处理。游戏王NBX对战平台使用教程NBX决斗盘背景制作教程腾讯QQ2008II Beta1 NBX更新补丁下载:微软网盘下载点击进入下载-游戏王NBX更新补…...
2024/4/20 16:49:22 - 常用性能测试工具、监控工具汇总 值得收藏
collectl - linux性能监控工具 http://collectl.sourceforge.net/index.htmliotop - linux磁盘IO性能监控工具 http://guichaz.free.fr/iotop/Linux监控工具 - SYSSTAT http://sebastien.godard.pagesperso-orange.fr/ The sysstat utilities are a collection of performance…...
2024/4/20 18:34:23 - Apriori算法学习和java实现
关联规则挖掘可以发现大量数据中项集之间有趣的关联或相关联系。一个典型的关联规则挖掘例子是购物篮分析,即通过发现顾客放入其购物篮中的不同商品之间的联系,分析顾客的购物习惯,从而可以帮助零售商指定营销策略,引导销售等。国外有"啤酒与尿布"的故事,国内有…...
2024/4/20 18:34:22 - 漫谈经典排序算法:一、从简单选择排序到堆排序的深度解析
1、序言这是《漫谈经典排序算法系列》第一篇,该篇从最简单的选择排序算法谈起,由浅入深的详细解析两种选择排序算法的过程及性能比较。逐步揭露选择排序的本质及其基本思想。 各种排序算法的解析请参考如下: 《漫谈经典排序算法:一、从简单选择排序到堆排序的深度解析》 《…...
2024/4/20 18:34:21 - 笔试面试算法经典--全排列算法-递归&字典序实现(Java)
全排列算法-递归&字典序实现全排列: 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。 例如: 1 、2 、3三个元素的全排列为:{1,2,3},{1,3,2},{2,1,3},{2,3,1},{…...
2024/4/13 10:38:03 - 几个可以画网络拓扑图的开源库
之前做个监控系统,需要在GUI客户端有个网络拓扑结构图,实时显示被监控节点的连接情况, 支持动态增减监控节点,能够在拓扑图上自动布局。找到了三个比较合适的库:SWT的ZEST : 基于draw2D库封装的,增加了一些事件处理,动画效果和几个常见布局; 是个比较粗糙的类库,图节点…...
2024/4/13 10:38:13 - 网上买的几百元的最新微信公众号H5游戏平台完整源码下载
网上买的几百元的最新微信公众号H5游戏平台完整源码下载微信Html5游戏平台源码,大家可以直接打开浏览器本地测试,到时候修改下关注链接就行,简单易学游戏太多了,不上图了,大家自己下去研究吧!下载地址:查看原文:http://www.51xyyx.com/2745.html...
2024/4/5 16:39:55 - 何时使用 Preference Headers
1. 问题提出:如何处理需要分屏分组的设置项? 在谷歌开发文档中以Android 3.0版本作为基线,对此问题进行不同的处理:Android 3.0之前:采用PreferenceScreen嵌套的方法;Android 3.0及之后:采用Preference Headers的方法。 2. 采用 PreferenceScreen 嵌套采用此方法的prefe…...
2024/4/18 13:20:30 - java中的递归算法
递归算法的条件有两个:1.趋近于某一终止条件2.循环调用自己本身比如斐波那契数列的算法,fn=f(n-1)+f(n-2);public class Dgui {public static int fbnq(int n){int f1=1;int f2=1;int f3=2;for(int i=2;i<n;i++){f3=f1+f2;f1=f2;f2=f3;}return f3;//斐波那契数列的算法,返…...
2024/4/13 10:38:08 - 网络排查工具MTR介绍
常用的 ping,tracert,nslookup 一般用来判断主机的网络连通性,其实 Linux 下有一个更好用的网络联通性判断工具,它可以结合ping nslookup tracert 来判断网络的相关特性,这个命令就是 mtr。mtr 全称 my traceroute,是一个把 ping 和 traceroute 合并到一个程序的网络诊断…...
2024/4/18 10:08:09 - 【转】 Pro Android学习笔记(六一):Preferences(5):组织Preference
目录(?)[-] PreferenceCategory Child Preference PreferenceCategory 如果有多个preference,我们希望能在他们组织在一起。有两种方式,一种就是我们在复合preference中,利用PreferenceScreen进行嵌套,或在同一个PreferenceScreen进行并列放置,这种方式之前已经介绍过,不…...
2024/4/18 17:56:09 - 网狐平台游戏开发
前言: 1.网上有很多网狐平台源码和架设环境的教程,但是我找了一下并没有后续教程,也就是说平台架设好了以后怎么才能添加自己的游戏到平台里面呢,我做了一个简单的GameDemo,并把游戏添加进网狐平台。2.网上架设环境教程都只讲了环境的假设,环境的假设只是开发游戏基础,…...
2024/4/20 9:16:28 - java可视化排序算法程序--基于Swing实现
Java Swing 实现可视化排序器源代码:https://github.com/kevinten10/Java-Swing-Projects简介操作流程主界面绘图界面功能概述八大排序算法进度检测执行结果文件的保存和读取曲线的绘制曲线导数计算 绘制曲线拟合计算 绘制多线程操作1.操作流程选择排序方式 或 导入文件点击按…...
2024/4/16 17:51:32 - 【图解算法】排序算法——堆排序
简介关于堆排序(HeapSort),堆这种数据结构比这种排序算法更为有价值。堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节…...
2024/4/19 13:58:50 - android 开发-系统设置界面的实现
具体与Preference的用法类似,这里就不做过多解释,直接贴示例代码,需要在res下新建xml文件夹,在xml文件夹下添加xml文件。xml:(注意:root节点是:PreferenceScreen)1 <?xml version="1.0" encoding="utf-8"?>2 <PreferenceScreen xmlns:and…...
2024/4/20 12:38:19 - Unity3D开发的赛车单机小游戏详细介绍(附有游戏下载链接)
博主使用Unity3D开发的赛车单机游戏详解(文末附游戏下载地址,由于时间过长,游戏源码已无法找到,请谅解)设计开始于想象。 空中跑道,深山小亭,隐藏在森林中的跑车… 一切等着你去发现,去体验… 我发誓,第一次玩的人不可能获胜,我不是打击你,是这游戏设计的难度太高… …...
2024/4/13 10:38:58 - 数据结构上机实验-希尔排序,快速排序,堆排序
1.希尔排序希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减…...
2024/4/5 11:34:58 - KDE的网络管理工具networkmanagement
Linux下的NetworkManager是新兴的、现代化的使Linux、Unix一族操作系统的网络连接简单、明了的一组工具。无论是WiFi、有线、3G还是蓝牙,它允许你方便快捷的从一个网络转移到另一个已经配置好的或曾经加入的网络中去,并且在下一次网络可用的时候自动检测和连接。NetworkManag…...
2024/4/5 16:39:46 - Cocos Creator子游戏动态下载实现(大厅+子游戏模式)
热更新在App开发过程中,当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就会忙得焦头烂额:重新打包App、测试、向各个应用市场和渠道换包、提示用户升级、用户下载、覆盖安装。热更新就是动态下发代码,它可以使开发者在不发布新版本的情况下,修…...
2024/4/15 13:10:02
最新文章
- ansible执行mysql脚本
目录 概述实践环境要求ansible yml脚本命令离线包 概述 ansible执行mysql脚本 实践 官网文档 环境要求 环境需要安装以下内容: 1.mysql客户端(安装了mysql即会有)2.安装MySQL-python (Python 2.X) 详细插件安装链接 ansible yml脚本 关键代码如下: # 剧本…...
2024/4/20 19:49:34 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 如何注册midjourney账号
注册Midjourney账号比较简单,准备好上网工具,进入官网 Midjourney访问地址: https://www.midjourney.com/ 目前没有免费使用额度了,会员最低 10 美元/月,一般建议使用30美元/月的订阅方案。了解如何订阅可以查看订阅…...
2024/4/20 11:51:46 - 蓝桥杯第十五届抱佛脚(十)贪心算法
蓝桥杯第十五届抱佛脚(十)贪心算法 贪心算法基本概念 贪心算法是一种在算法设计中常用的方法,它在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。 贪…...
2024/4/19 0:49:59 - JVM学习笔记
文章目录 一、内存模型1. 程序计数器2. 栈3. 本地方法栈4. 堆5. 方法区方法区位置字符串常量池位置 6. 直接内存 二、虚拟机参数设置三、类的生命周期1. 加载2. 连接1)验证2)准备3)解析 3. 初始化4. 卸载 四、类加载器1. 启动类加载器2. 扩展…...
2024/4/17 22:18:57 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/19 14:24:02 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/19 18:20:22 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/19 11:57:31 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/19 11:57:31 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/19 11:57:52 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/19 11:57:53 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/19 11:58:14 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/19 11:58:20 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/20 7:40:48 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/19 11:58:39 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/19 11:58:51 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/20 3:12:02 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/19 11:59:15 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/19 11:59:23 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/19 11:59:44 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/19 11:59:48 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/19 12:00:06 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/19 16:57:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/19 12:00:25 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/19 12:00:40 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57