关于网站设计的会议,网站买空间,win7怎么做网站域名绑定,网站做过备案后能改别的公司吗问题
打开数据开关后#xff0c;没有data PDN请求发起#xff0c;因此无法上网。
根据日志确定是没有找到合适的data profile#xff0c;原因一般有#xff1a;
1、APN 没有配置
2、APN 类型/网络能力不满足——APN type或bearer
3、APN 配置了但被disable了——APN p…问题
打开数据开关后没有data PDN请求发起因此无法上网。
根据日志确定是没有找到合适的data profile原因一般有
1、APN 没有配置
2、APN 类型/网络能力不满足——APN type或bearer
3、APN 配置了但被disable了——APN proofile的carrierEnable值
日志分析
fail log
APN 被disable了所以无法匹配。 //preferredtrue说明当前选中的是此条APN 11-20 15:01:51.409140 2316 3480 D DPM-0 : getApnSettingForNetworkRequest: networkType13 isMtkImsDataSupporttrue hasEimsCapabilityfalse mPreferredDataProfile[DataProfile[ApnSetting]....] dataProfilesCount0 dataProfiles[] mAllDataProfiles[[DataProfile[ApnSetting] INTERNET, 3080, xxxxxx, internet, , null, , null, null, 0, supl | hipri | default, IPV4V6, IP, false, 0, true, 0, 0, 0, 0, 0, gid, xxxxx000000000000, false, UNKNOWN, UNKNOWN, 0, -1, -1, false, 961, TrafficDescriptor{mDnninternet, null}, preferredtrue]...]11-20 15:01:51.410224 2316 3480 D DPM-0 : Cant find any data profile that can satisfy [NetworkRequest [ NONE id0, [ Capabilities: DUNTRUSTEDNOT_VPNNOT_VCN_MANAGED Uid: 1001 UnderlyingNetworks: Null] ], mPriority30, stateUNSATISFIED, mAttachedDataNetworknull, isMeteredtrue, created time15:01:51.407, evaluation resultnull] 11-20 15:01:51.411224 1366 1366 D ImsManager: [1] Registration callback removed. 11-20 15:01:51.413463 2316 3480 D DPM-0 : Unable to find a data profile for [NetworkRequest [ NONE id0, [ Capabilities: DUNTRUSTEDNOT_VPNNOT_VCN_MANAGED Uid: 1001 UnderlyingNetworks: Null] ], mPriority30, stateUNSATISFIED, mAttachedDataNetworknull, isMeteredtrue, created time15:01:51.408, evaluation resultnull] 正常日志 dataProfilesCount 指明网络能力匹配的APN数 11-20 15:19:20.723854 2316 2316 D DPM-0 : getApnSettingForNetworkRequest: networkType13 isMtkImsDataSupporttrue hasEimsCapabilityfalse mPreferredDataProfile[DataProfile[ApnSetting] ....] dataProfilesCount1 dataProfiles[[DataProfile[ApnSetting] 11-20 15:19:20.725075 2316 2316 V DPM-0 : Satisfied profile: [DataProfile[ApnSetting] 11-20 15:19:20.725871 2316 2316 D DPM-0 : The final available profile: [DataProfile[ApnSetting] 11-20 15:19:20.729504 2316 2316 D DNC-0 : Data evaluation: evaluation reason:NEW_REQUEST, Data allowed reason: NORMAL, candidate profile[DataProfile[ApnSetting] 11-20 15:19:20.730116 2316 2316 D DNC-0 : onSetupDataNetwork: dataProfile[DataProfile[ApnSetting] 11-20 15:19:20.731688 2316 2316 D DNC-0 : Creating data network on WWAN with [DataProfile[ApnSetting] 11-20 15:19:20.768286 2316 2316 D DSM-C-0 : setupDataCall 11-20 15:19:20.769505 2316 2316 D DN-114-C: ConnectingState: setupData: accessNetworkEUTRAN, [DataProfile[ApnSetting] ...], isModemRoamingfalse, allowRoamingtrue, PDU session id0, matchAllRuleAllowedtrue 11-20 15:19:20.776007 2316 2682 D RILJ : [0868] SETUP_DATA_CALL,reasonNORMAL,accessNetworkTypeEUTRAN,dataProfile[DataProfile[ApnSetting] ..],isRoamingfalse,allowRoamingtrue,linkPropertiesnull,pduSessionId0,sliceInfonull,trafficDescriptorTrafficDescriptor{mDnnVZWADMIN, null},matchAllRuleAllowedtrue [PHONE0] 11-20 15:19:21.063568 2316 2674 D RILJ : [0868] SETUP_DATA_CALL DataCallResponse: { causeNONE(0x0) retry-1 cid1803 linkStatus2 protocolType2 ifnameccmni3 addresses[10.128.159.113/32, 2600:100f:f00c:330f:0:56:6fe2:e801/64] dnses[/2001:4888:53:ff00:524:d::, /2001:4888:52:ff00:528:d::, /198.224.166.135, /198.224.167.135] gateways[/10.128.159.113, /::] pcscf[] mtu1428 mtuV41428 mtuV61428 handoverFailureModeunknown pduSessionId0 defaultQosEpsQos { qosClassId8 downlinkBandwidth { maxBitrateKbps0 guaranteedBitrateKbps0} uplinkBandwidth { maxBitrateKbps0 guaranteedBitrateKbps0}} qosBearerSessions[] sliceInfonull trafficDescriptors[]} [PHONE0] 代码分析
DataProfileManager.java - 【frameworks/opt/telephony】
/*** Get the APN setting for the network request.** param networkRequest The network request.* param networkType The current data network type.* param ignorePermanentFailure {code true} to ignore {link ApnSetting#getPermanentFailed()}.* This should be set to true for condition-based retry/setup.* return The APN setting. {code null} if cant find any satisfiable data profile.*/
private Nullable ApnSetting getApnSettingForNetworkRequest(NonNull TelephonyNetworkRequest networkRequest, NetworkType int networkType,boolean ignorePermanentFailure) {if (!networkRequest.hasAttribute(TelephonyNetworkRequest.CAPABILITY_ATTRIBUTE_APN_SETTING)) {loge(Network request does not have APN setting attribute.);return null;}//1、优先选择preferred APN如果满足并且不处于PermanentFailure状态则直接请求// If the preferred data profile can be used, always use it if it can satisfy the network// request with current network type (even though its been marked as permanent failed.)if (mPreferredDataProfile ! null networkRequest.canBeSatisfiedBy(mPreferredDataProfile) mPreferredDataProfile.getApnSetting() ! null mPreferredDataProfile.getApnSetting().canSupportNetworkType(networkType)) {if (ignorePermanentFailure || !mPreferredDataProfile.getApnSetting().getPermanentFailed()) {return mPreferredDataProfile.getApnSetting();}log(The preferred data profile is permanently failed. Only condition based retry can happen.);return null;}//2、如果没有首选数据配置文件则过滤掉不能满足网络请求的数据配置文件//Note找不到profile 一般就是这里匹配不到了// Filter out the data profile that cant satisfy the request.// Preferred data profile should be returned in the top of the list.ListDataProfile dataProfiles mAllDataProfiles.stream().filter(networkRequest::canBeSatisfiedBy)// The longest time hasnt used data profile will be in the front so all the data// profiles can be tried..sorted(Comparator.comparing(DataProfile::getLastSetupTimestamp)) //并按照它们的最后设置时间进行排序将最长时间未使用的数据配置文件放在列表的前面.collect(Collectors.toList());for (DataProfile dataProfile : dataProfiles) { //然后尝试筛选并使用它们来满足网络请求。logv(Satisfied profile: dataProfile , last setup DataUtils.elapsedTimeToString(dataProfile.getLastSetupTimestamp()));}if (dataProfiles.size() 0) {log(Cant find any data profile that can satisfy networkRequest);return null;}// Check if the remaining data profiles can used in current data network type.dataProfiles dataProfiles.stream().filter(dp - dp.getApnSetting() ! null dp.getApnSetting().canSupportNetworkType(networkType)).collect(Collectors.toList());if (dataProfiles.size() 0) {log(Cant find any data profile for network type TelephonyManager.getNetworkTypeName(networkType));return null;}// Check if preferred data profile set id matches.dataProfiles dataProfiles.stream().filter(dp - dp.getApnSetting() ! null (dp.getApnSetting().getApnSetId() Telephony.Carriers.MATCH_ALL_APN_SET_ID|| dp.getApnSetting().getApnSetId() mPreferredDataProfileSetId)).collect(Collectors.toList());if (dataProfiles.size() 0) {log(Cant find any data profile has APN set id matched. mPreferredDataProfileSetId mPreferredDataProfileSetId);return null;}// Check if data profiles are permanently failed.dataProfiles dataProfiles.stream().filter(dp - ignorePermanentFailure || !dp.getApnSetting().getPermanentFailed()).collect(Collectors.toList());if (dataProfiles.size() 0) {log(The suitable data profiles are all in permanent failed state.);return null;}return dataProfiles.get(0).getApnSetting();
}排查接口
canBeSatisfiedBy in TelephonyNetworkRequest.java -【frameworks/opt/telephony】
canHandleType in ApnSetting.java【frameworks/base/telephony】 匹配不到关键就是在网络能力评估的过程canBeSatisfiedBy会根据APN类型筛选能力匹配的项在canHandleType检查完APN可用性之后返回enable且符合网络的APN。 /**
* Check if this network request can be satisfied by a data profile.
*
* param dataProfile The data profile to check.
* return {code true} if this network request can be satisfied by the data profile.
*/
public boolean canBeSatisfiedBy(NonNull DataProfile dataProfile) {// If the network request can be translated to OS/App id, then check if the data profiles// OS/App id can satisfy it.if (hasAttribute(CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_OS_APP_ID) getOsAppId() ! null) {// The network request has traffic descriptor type capabilities. Match the traffic// descriptor.if (dataProfile.getTrafficDescriptor() ! null Arrays.equals(getOsAppId().getBytes(),dataProfile.getTrafficDescriptor().getOsAppId())) {return true;}}// If the network request can be translated to APN setting or DNN in traffic descriptor,// then check if the data profiles APN setting can satisfy it.if ((hasAttribute(CAPABILITY_ATTRIBUTE_APN_SETTING)|| hasAttribute(CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_DNN)) dataProfile.getApnSetting() ! null) {// Fallback to the legacy APN type matching.ListInteger apnTypes Arrays.stream(getCapabilities()).boxed().map(DataUtils::networkCapabilityToApnType).filter(apnType - apnType ! ApnSetting.TYPE_NONE).collect(Collectors.toList());// In case of enterprise network request, the network request will have internet,// but APN type will not have default type as the enterprise apn should not be used// as default network. Ignore default type of the network request if it// has enterprise type as well. This will make sure the network request with// internet and enterprise will be satisfied with data profile with enterprise at the// same time default network request will not get satisfied with enterprise data// profile.// TODO b/232264746if (apnTypes.contains(ApnSetting.TYPE_ENTERPRISE)) {apnTypes.remove((Integer) ApnSetting.TYPE_DEFAULT);}return apnTypes.stream().allMatch(dataProfile.getApnSetting()::canHandleType);}return false;
}/** hide */
public boolean canHandleType(ApnType int type) {if (!mCarrierEnabled) {return false;}// DEFAULT can handle HIPRI.return hasApnType(type);
} 定位原因的方法
查看APNSettings配置是否正确以上问题就是APN配置了但被disable了。 [DataProfile[ApnSetting] INTERNET, 3080, xxxxxx, internet, , null, , null, null, 0, supl | hipri | default, IPV4V6, IP, false, 0, true, 0, 0, 0, 0, 0, gid, xxxxx000000000000, false, UNKNOWN, UNKNOWN, 0, -1, -1, false, 961, TrafficDescriptor{mDnninternet, null}, preferredtrue] 根据ApnSettings实体节后打印信息mCarrierEnabled就是上述日志false的位置。
/*** Returns the string representation of ApnSetting.** This method prints null for unset elements. The output doesnt contain password or user.* hide*/
public String toString() {StringBuilder sb new StringBuilder();sb.append([ApnSetting] ).append(mEntryName).append(, ).append(mId).append(, ).append(mOperatorNumeric).append(, ).append(mApnName).append(, ).append(mProxyAddress).append(, ).append(UriToString(mMmsc)).append(, ).append(mMmsProxyAddress).append(, ).append(portToString(mMmsProxyPort)).append(, ).append(portToString(mProxyPort)).append(, ).append(mAuthType).append(, );final String[] types getApnTypesStringFromBitmask(mApnTypeBitmask).split(,);sb.append(TextUtils.join( | , types));sb.append(, ).append(PROTOCOL_INT_MAP.get(mProtocol));sb.append(, ).append(PROTOCOL_INT_MAP.get(mRoamingProtocol));sb.append(, ).append(mCarrierEnabled); //APN启用情况sb.append(, ).append(mProfileId);sb.append(, ).append(mPersistent);sb.append(, ).append(mMaxConns);sb.append(, ).append(mWaitTime);sb.append(, ).append(mMaxConnsTime);sb.append(, ).append(mMtuV4);sb.append(, ).append(mMtuV6);sb.append(, ).append(MVNO_TYPE_INT_MAP.get(mMvnoType));sb.append(, ).append(mMvnoMatchData);sb.append(, ).append(mPermanentFailed);sb.append(, ).append(TelephonyManager.convertNetworkTypeBitmaskToString(mNetworkTypeBitmask));sb.append(, ).append(TelephonyManager.convertNetworkTypeBitmaskToString(mLingeringNetworkTypeBitmask));sb.append(, ).append(mApnSetId);sb.append(, ).append(mCarrierId);sb.append(, ).append(mSkip464Xlat);sb.append(, ).append(mAlwaysOn);sb.append(, ).append(Objects.hash(mUser, mPassword));return sb.toString();
} 其他
代码网站阅读AndroidXRef