Loading android/app/src/com/android/bluetooth/pbap/BluetoothPbapObexServer.java +27 −12 Original line number Diff line number Diff line Loading @@ -106,8 +106,9 @@ public class BluetoothPbapObexServer extends ServerRequestHandler { "/telecom/cch", }; // Currently not support SIM card @SuppressWarnings("unused") private static final String[] LEGAL_PATH_WITH_SIM = { // SIM card is only supported when SIM feature is enabled // (i.e. when the property bluetooth.profile.pbap.sim.enabled is set to true) private static final String[] LEGAL_PATH_WITH_SIM = { "/telecom", "/telecom/pb", "/telecom/fav", Loading Loading @@ -492,6 +493,8 @@ public class BluetoothPbapObexServer extends ServerRequestHandler { validName = false; } boolean isSimEnabled = BluetoothPbapService.isSimEnabled(); if (!validName || (validName && type.equals(TYPE_VCARD))) { if (D) { Log.d(TAG, Loading @@ -502,21 +505,28 @@ public class BluetoothPbapObexServer extends ServerRequestHandler { appParamValue.needTag = ContentType.PHONEBOOK; } else if (mCurrentPath.equals(FAV_PATH)) { appParamValue.needTag = ContentType.FAVORITES; } else if (mCurrentPath.equals(ICH_PATH)) { } else if (mCurrentPath.equals(ICH_PATH) || (isSimEnabled && mCurrentPath.equals(SIM_ICH_PATH))) { appParamValue.needTag = ContentType.INCOMING_CALL_HISTORY; } else if (mCurrentPath.equals(OCH_PATH)) { } else if (mCurrentPath.equals(OCH_PATH) || (isSimEnabled && mCurrentPath.equals(SIM_OCH_PATH))) { appParamValue.needTag = ContentType.OUTGOING_CALL_HISTORY; } else if (mCurrentPath.equals(MCH_PATH)) { } else if (mCurrentPath.equals(MCH_PATH) || (isSimEnabled && mCurrentPath.equals(SIM_MCH_PATH))) { appParamValue.needTag = ContentType.MISSED_CALL_HISTORY; mNeedNewMissedCallsNum = true; } else if (mCurrentPath.equals(CCH_PATH)) { } else if (mCurrentPath.equals(CCH_PATH) || (isSimEnabled && mCurrentPath.equals(SIM_CCH_PATH))) { appParamValue.needTag = ContentType.COMBINED_CALL_HISTORY; } else if (mCurrentPath.equals(TELECOM_PATH)) { } else if (mCurrentPath.equals(TELECOM_PATH) || (isSimEnabled && mCurrentPath.equals(SIM_PATH))) { /* PBAP 1.1.1 change */ if (!validName && type.equals(TYPE_LISTING)) { Log.e(TAG, "invalid vcard listing request in default folder"); return ResponseCodes.OBEX_HTTP_NOT_FOUND; } } else if (isSimEnabled && mCurrentPath.equals(SIM_PB_PATH)) { appParamValue.needTag = ContentType.SIM_PHONEBOOK; } else { Log.w(TAG, "mCurrentpath is not valid path!!!"); return ResponseCodes.OBEX_HTTP_NOT_ACCEPTABLE; Loading @@ -532,9 +542,11 @@ public class BluetoothPbapObexServer extends ServerRequestHandler { TYPE_PB, TYPE_LISTING, mCurrentPath)) { appParamValue.needTag = ContentType.SIM_PHONEBOOK; if (D) Log.d(TAG, "download SIM phonebook request"); if (!isSimEnabled) { // Not support SIM card currently Log.w(TAG, "Not support access SIM card info!"); return ResponseCodes.OBEX_HTTP_NOT_ACCEPTABLE; } } else if (isNameMatchTarget(name, PB)) { appParamValue.needTag = ContentType.PHONEBOOK; if (D) { Loading Loading @@ -629,8 +641,11 @@ public class BluetoothPbapObexServer extends ServerRequestHandler { if (str.length() == 0) { return true; } for (int i = 0; i < LEGAL_PATH.length; i++) { if (str.equals(LEGAL_PATH[i])) { String[] legal_paths = BluetoothPbapService.isSimEnabled() ? LEGAL_PATH_WITH_SIM : LEGAL_PATH; for (int i = 0; i < legal_paths.length; i++) { if (str.equals(legal_paths[i])) { return true; } } Loading android/app/src/com/android/bluetooth/pbap/BluetoothPbapService.java +10 −2 Original line number Diff line number Diff line Loading @@ -160,7 +160,8 @@ public class BluetoothPbapService extends ProfileService implements IObexConnect private static final int SDP_PBAP_SERVER_VERSION_1_2 = 0x0102; // PBAP v1.2.3, Sec. 7.1.2: local phonebook and favorites private static final int SDP_PBAP_SUPPORTED_REPOSITORIES = 0x0009; private static final int SDP_PBAP_SUPPORTED_REPOSITORIES_WITHOUT_SIM = 0x0009; private static final int SDP_PBAP_SUPPORTED_REPOSITORIES_WITH_SIM = 0x000B; private static final int SDP_PBAP_SUPPORTED_FEATURES = 0x021F; /* PBAP will use Bluetooth notification ID from 1000000 (included) to 2000000 (excluded). Loading Loading @@ -202,6 +203,10 @@ public class BluetoothPbapService extends ProfileService implements IObexConnect return BluetoothProperties.isProfilePbapServerEnabled().orElse(false); } public static boolean isSimEnabled() { return BluetoothProperties.isProfilePbapSimEnabled().orElse(false); } private class BluetoothPbapContentObserver extends ContentObserver { BluetoothPbapContentObserver() { super(new Handler()); Loading Loading @@ -376,6 +381,9 @@ public class BluetoothPbapService extends ProfileService implements IObexConnect return; } int pbapSupportedRepositories = isSimEnabled() ? SDP_PBAP_SUPPORTED_REPOSITORIES_WITH_SIM : SDP_PBAP_SUPPORTED_REPOSITORIES_WITHOUT_SIM; mSdpHandle = SdpManagerNativeInterface.getInstance() .createPbapPseRecord( Loading @@ -383,7 +391,7 @@ public class BluetoothPbapService extends ProfileService implements IObexConnect mServerSockets.getRfcommChannel(), mServerSockets.getL2capPsm(), SDP_PBAP_SERVER_VERSION_1_2, SDP_PBAP_SUPPORTED_REPOSITORIES, pbapSupportedRepositories, SDP_PBAP_SUPPORTED_FEATURES); if (DEBUG) { Loading Loading
android/app/src/com/android/bluetooth/pbap/BluetoothPbapObexServer.java +27 −12 Original line number Diff line number Diff line Loading @@ -106,8 +106,9 @@ public class BluetoothPbapObexServer extends ServerRequestHandler { "/telecom/cch", }; // Currently not support SIM card @SuppressWarnings("unused") private static final String[] LEGAL_PATH_WITH_SIM = { // SIM card is only supported when SIM feature is enabled // (i.e. when the property bluetooth.profile.pbap.sim.enabled is set to true) private static final String[] LEGAL_PATH_WITH_SIM = { "/telecom", "/telecom/pb", "/telecom/fav", Loading Loading @@ -492,6 +493,8 @@ public class BluetoothPbapObexServer extends ServerRequestHandler { validName = false; } boolean isSimEnabled = BluetoothPbapService.isSimEnabled(); if (!validName || (validName && type.equals(TYPE_VCARD))) { if (D) { Log.d(TAG, Loading @@ -502,21 +505,28 @@ public class BluetoothPbapObexServer extends ServerRequestHandler { appParamValue.needTag = ContentType.PHONEBOOK; } else if (mCurrentPath.equals(FAV_PATH)) { appParamValue.needTag = ContentType.FAVORITES; } else if (mCurrentPath.equals(ICH_PATH)) { } else if (mCurrentPath.equals(ICH_PATH) || (isSimEnabled && mCurrentPath.equals(SIM_ICH_PATH))) { appParamValue.needTag = ContentType.INCOMING_CALL_HISTORY; } else if (mCurrentPath.equals(OCH_PATH)) { } else if (mCurrentPath.equals(OCH_PATH) || (isSimEnabled && mCurrentPath.equals(SIM_OCH_PATH))) { appParamValue.needTag = ContentType.OUTGOING_CALL_HISTORY; } else if (mCurrentPath.equals(MCH_PATH)) { } else if (mCurrentPath.equals(MCH_PATH) || (isSimEnabled && mCurrentPath.equals(SIM_MCH_PATH))) { appParamValue.needTag = ContentType.MISSED_CALL_HISTORY; mNeedNewMissedCallsNum = true; } else if (mCurrentPath.equals(CCH_PATH)) { } else if (mCurrentPath.equals(CCH_PATH) || (isSimEnabled && mCurrentPath.equals(SIM_CCH_PATH))) { appParamValue.needTag = ContentType.COMBINED_CALL_HISTORY; } else if (mCurrentPath.equals(TELECOM_PATH)) { } else if (mCurrentPath.equals(TELECOM_PATH) || (isSimEnabled && mCurrentPath.equals(SIM_PATH))) { /* PBAP 1.1.1 change */ if (!validName && type.equals(TYPE_LISTING)) { Log.e(TAG, "invalid vcard listing request in default folder"); return ResponseCodes.OBEX_HTTP_NOT_FOUND; } } else if (isSimEnabled && mCurrentPath.equals(SIM_PB_PATH)) { appParamValue.needTag = ContentType.SIM_PHONEBOOK; } else { Log.w(TAG, "mCurrentpath is not valid path!!!"); return ResponseCodes.OBEX_HTTP_NOT_ACCEPTABLE; Loading @@ -532,9 +542,11 @@ public class BluetoothPbapObexServer extends ServerRequestHandler { TYPE_PB, TYPE_LISTING, mCurrentPath)) { appParamValue.needTag = ContentType.SIM_PHONEBOOK; if (D) Log.d(TAG, "download SIM phonebook request"); if (!isSimEnabled) { // Not support SIM card currently Log.w(TAG, "Not support access SIM card info!"); return ResponseCodes.OBEX_HTTP_NOT_ACCEPTABLE; } } else if (isNameMatchTarget(name, PB)) { appParamValue.needTag = ContentType.PHONEBOOK; if (D) { Loading Loading @@ -629,8 +641,11 @@ public class BluetoothPbapObexServer extends ServerRequestHandler { if (str.length() == 0) { return true; } for (int i = 0; i < LEGAL_PATH.length; i++) { if (str.equals(LEGAL_PATH[i])) { String[] legal_paths = BluetoothPbapService.isSimEnabled() ? LEGAL_PATH_WITH_SIM : LEGAL_PATH; for (int i = 0; i < legal_paths.length; i++) { if (str.equals(legal_paths[i])) { return true; } } Loading
android/app/src/com/android/bluetooth/pbap/BluetoothPbapService.java +10 −2 Original line number Diff line number Diff line Loading @@ -160,7 +160,8 @@ public class BluetoothPbapService extends ProfileService implements IObexConnect private static final int SDP_PBAP_SERVER_VERSION_1_2 = 0x0102; // PBAP v1.2.3, Sec. 7.1.2: local phonebook and favorites private static final int SDP_PBAP_SUPPORTED_REPOSITORIES = 0x0009; private static final int SDP_PBAP_SUPPORTED_REPOSITORIES_WITHOUT_SIM = 0x0009; private static final int SDP_PBAP_SUPPORTED_REPOSITORIES_WITH_SIM = 0x000B; private static final int SDP_PBAP_SUPPORTED_FEATURES = 0x021F; /* PBAP will use Bluetooth notification ID from 1000000 (included) to 2000000 (excluded). Loading Loading @@ -202,6 +203,10 @@ public class BluetoothPbapService extends ProfileService implements IObexConnect return BluetoothProperties.isProfilePbapServerEnabled().orElse(false); } public static boolean isSimEnabled() { return BluetoothProperties.isProfilePbapSimEnabled().orElse(false); } private class BluetoothPbapContentObserver extends ContentObserver { BluetoothPbapContentObserver() { super(new Handler()); Loading Loading @@ -376,6 +381,9 @@ public class BluetoothPbapService extends ProfileService implements IObexConnect return; } int pbapSupportedRepositories = isSimEnabled() ? SDP_PBAP_SUPPORTED_REPOSITORIES_WITH_SIM : SDP_PBAP_SUPPORTED_REPOSITORIES_WITHOUT_SIM; mSdpHandle = SdpManagerNativeInterface.getInstance() .createPbapPseRecord( Loading @@ -383,7 +391,7 @@ public class BluetoothPbapService extends ProfileService implements IObexConnect mServerSockets.getRfcommChannel(), mServerSockets.getL2capPsm(), SDP_PBAP_SERVER_VERSION_1_2, SDP_PBAP_SUPPORTED_REPOSITORIES, pbapSupportedRepositories, SDP_PBAP_SUPPORTED_FEATURES); if (DEBUG) { Loading