1b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu/* 2b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu * Copyright (C) 2017 The Android Open Source Project 3b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu * 4b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu * Licensed under the Apache License, Version 2.0 (the "License"); 5b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu * you may not use this file except in compliance with the License. 6b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu * You may obtain a copy of the License at 7b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu * 8b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu * http://www.apache.org/licenses/LICENSE-2.0 9b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu * 10b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu * Unless required by applicable law or agreed to in writing, software 11b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu * distributed under the License is distributed on an "AS IS" BASIS, 12b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu * See the License for the specific language governing permissions and 14b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu * limitations under the License. 15b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu */ 16b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 17b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxupackage com.android.internal.telephony; 18b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 19cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqianimport static com.android.internal.telephony.TelephonyTestUtils.waitForMs; 20cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqianimport static org.junit.Assert.assertEquals; 21cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqianimport static org.junit.Assert.assertNull; 22cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqianimport static org.mockito.Matchers.eq; 23cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqianimport static org.mockito.Mockito.doReturn; 24cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqian 25b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxuimport android.database.Cursor; 26b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxuimport android.database.MatrixCursor; 27b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxuimport android.net.Uri; 28b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxuimport android.os.HandlerThread; 29f24387f54a080dfc6e72c0511b2b3db757585edffionaxuimport android.provider.Telephony.CarrierId; 30b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxuimport android.provider.Telephony.Carriers; 31b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxuimport android.test.mock.MockContentProvider; 32b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxuimport android.test.mock.MockContentResolver; 33b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxuimport android.test.suitebuilder.annotation.SmallTest; 34cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqian 35b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxuimport org.junit.After; 36b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxuimport org.junit.Before; 37b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxuimport org.junit.Test; 38b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 39cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqianimport java.util.Arrays; 40b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 41b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxupublic class CarrierIdentifierTest extends TelephonyTest { 42b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu private static final String MCCMNC = "311480"; 43b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu private static final String NAME = "VZW"; 44b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu private static final int CID_VZW = 1; 45b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 46b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu private static final String SPN_FI = "PROJECT FI"; 47b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu private static final String NAME_FI = "FI"; 48b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu private static final int CID_FI = 2; 49b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 50b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu private static final String NAME_DOCOMO = "DOCOMO"; 51b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu private static final String APN_DOCOMO = "mopera.net"; 52b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu private static final int CID_DOCOMO = 3; 53b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 54b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu private static final String NAME_TMO = "TMO"; 55b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu private static final String GID1 = "ae"; 56b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu private static final int CID_TMO = 4; 57b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 58b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu private static final int CID_UNKNOWN = -1; 59b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 60b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu // events to trigger carrier identification 61b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu private static final int SIM_LOAD_EVENT = 1; 62b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu private static final int SIM_ABSENT_EVENT = 2; 63b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu private static final int SPN_OVERRIDE_EVENT = 3; 64b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu private static final int PREFER_APN_SET_EVENT = 5; 65b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 66b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu private CarrierIdentifier mCarrierIdentifier; 67b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu private CarrierIdentifierHandler mCarrierIdentifierHandler; 68b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 69b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu private class CarrierIdentifierHandler extends HandlerThread { 70b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu private CarrierIdentifierHandler(String name) { 71b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu super(name); 72b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu } 73b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 74b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu @Override 75b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu public void onLooperPrepared() { 76b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu mCarrierIdentifier = new CarrierIdentifier(mPhone); 77b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu setReady(true); 78b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu } 79b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu } 80b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 81b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu @Before 82b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu public void setUp() throws Exception { 83b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu logd("CarrierIdentifierTest +Setup!"); 84b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu super.setUp(getClass().getSimpleName()); 85b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu ((MockContentResolver) mContext.getContentResolver()).addProvider( 86f24387f54a080dfc6e72c0511b2b3db757585edffionaxu CarrierId.AUTHORITY, new CarrierIdContentProvider()); 87b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu // start handler thread 88b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu mCarrierIdentifierHandler = new CarrierIdentifierHandler(getClass().getSimpleName()); 89b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu mCarrierIdentifierHandler.start(); 90b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu waitUntilReady(); 91b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu logd("CarrierIdentifierTest -Setup!"); 92b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu } 93b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 94b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu @After 95b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu public void tearDown() throws Exception { 96b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu logd("CarrierIdentifier -tearDown"); 97b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu mCarrierIdentifier.removeCallbacksAndMessages(null); 98b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu mCarrierIdentifier = null; 99b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu mCarrierIdentifierHandler.quit(); 100b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu super.tearDown(); 101b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu } 102b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 103b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu @Test 104b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu @SmallTest 105b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu public void testCarrierMatch() { 106b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu int phoneId = mPhone.getPhoneId(); 107b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu doReturn(MCCMNC).when(mTelephonyManager).getSimOperatorNumericForPhone(eq(phoneId)); 108b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu // trigger sim loading event 109b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu mCarrierIdentifier.sendEmptyMessage(SIM_LOAD_EVENT); 110b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu waitForMs(200); 111b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu assertEquals(CID_VZW, mCarrierIdentifier.getCarrierId()); 112b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu assertEquals(NAME, mCarrierIdentifier.getCarrierName()); 113b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 114b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu doReturn(SPN_FI).when(mTelephonyManager).getSimOperatorNameForPhone(eq(phoneId)); 115b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu mCarrierIdentifier.sendEmptyMessage(SIM_LOAD_EVENT); 116b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu waitForMs(200); 117b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu assertEquals(CID_FI, mCarrierIdentifier.getCarrierId()); 118b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu assertEquals(NAME_FI, mCarrierIdentifier.getCarrierName()); 119b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 120b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu doReturn(GID1).when(mPhone).getGroupIdLevel1(); 121b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu mCarrierIdentifier.sendEmptyMessage(SIM_LOAD_EVENT); 122b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu waitForMs(200); 123b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu assertEquals(CID_TMO, mCarrierIdentifier.getCarrierId()); 124b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu assertEquals(NAME_TMO, mCarrierIdentifier.getCarrierName()); 125b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu } 126b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 127b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu @Test 128b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu @SmallTest 129b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu public void testCarrierMatchSpnOverride() { 130b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu int phoneId = mPhone.getPhoneId(); 131b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu doReturn(MCCMNC).when(mTelephonyManager).getSimOperatorNumericForPhone(eq(phoneId)); 132b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu // trigger sim loading event 133b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu mCarrierIdentifier.sendEmptyMessage(SIM_LOAD_EVENT); 134b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu waitForMs(200); 135b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu assertEquals(CID_VZW, mCarrierIdentifier.getCarrierId()); 136b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu assertEquals(NAME, mCarrierIdentifier.getCarrierName()); 137b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu // spn override 138b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu doReturn(SPN_FI).when(mTelephonyManager).getSimOperatorNameForPhone(eq(phoneId)); 139b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu mCarrierIdentifier.sendEmptyMessage(SPN_OVERRIDE_EVENT); 140b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu waitForMs(200); 141b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu assertEquals(CID_FI, mCarrierIdentifier.getCarrierId()); 142b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu assertEquals(NAME_FI, mCarrierIdentifier.getCarrierName()); 143b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu } 144b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 145b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu @Test 146b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu @SmallTest 147b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu public void testCarrierMatchSimAbsent() { 148b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu int phoneId = mPhone.getPhoneId(); 149b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu doReturn(MCCMNC).when(mTelephonyManager).getSimOperatorNumericForPhone(eq(phoneId)); 150b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu // trigger sim loading event 151b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu mCarrierIdentifier.sendEmptyMessage(SIM_LOAD_EVENT); 152b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu waitForMs(200); 153b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu assertEquals(CID_VZW, mCarrierIdentifier.getCarrierId()); 154b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu assertEquals(NAME, mCarrierIdentifier.getCarrierName()); 155b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu // trigger sim absent event 156b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu mCarrierIdentifier.sendEmptyMessage(SIM_ABSENT_EVENT); 157b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu waitForMs(200); 158b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu assertEquals(CID_UNKNOWN, mCarrierIdentifier.getCarrierId()); 159b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu assertNull(mCarrierIdentifier.getCarrierName()); 160b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu } 161b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 162b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu @Test 163b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu @SmallTest 164b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu public void testCarrierNoMatch() { 165b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu // un-configured MCCMNC 166b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu int phoneId = mPhone.getPhoneId(); 167b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu doReturn("12345").when(mTelephonyManager).getSimOperatorNumericForPhone(eq(phoneId)); 168b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu // trigger sim loading event 169b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu mCarrierIdentifier.sendEmptyMessage(SIM_LOAD_EVENT); 170b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu waitForMs(200); 171b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu assertEquals(CID_UNKNOWN, mCarrierIdentifier.getCarrierId()); 172b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu assertNull(mCarrierIdentifier.getCarrierName()); 173b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu } 174b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 175b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu @Test 176b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu @SmallTest 177b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu public void testCarrierMatchPreferApnChange() { 178b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu int phoneId = mPhone.getPhoneId(); 179b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu doReturn(MCCMNC).when(mTelephonyManager).getSimOperatorNumericForPhone(eq(phoneId)); 180b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu // trigger sim loading event 181b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu mCarrierIdentifier.sendEmptyMessage(SIM_LOAD_EVENT); 182b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu waitForMs(200); 183b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu assertEquals(CID_VZW, mCarrierIdentifier.getCarrierId()); 184b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu assertEquals(NAME, mCarrierIdentifier.getCarrierName()); 185b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu // mock apn 186b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu ((MockContentResolver) mContext.getContentResolver()).addProvider( 187b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu Carriers.CONTENT_URI.getAuthority(), new CarrierIdContentProvider()); 188b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu mCarrierIdentifier.sendEmptyMessage(PREFER_APN_SET_EVENT); 189b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu waitForMs(200); 190b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu assertEquals(CID_DOCOMO, mCarrierIdentifier.getCarrierId()); 191b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu assertEquals(NAME_DOCOMO, mCarrierIdentifier.getCarrierName()); 192b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu } 193b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 194b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu private class CarrierIdContentProvider extends MockContentProvider { 195b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu @Override 196b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, 197b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu String sortOrder) { 198b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu logd("CarrierIdContentProvider: query"); 199b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu logd(" uri = " + uri); 200b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu logd(" projection = " + Arrays.toString(projection)); 201b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu logd(" selection = " + selection); 202b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu logd(" selectionArgs = " + Arrays.toString(selectionArgs)); 203b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu logd(" sortOrder = " + sortOrder); 204b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 205f24387f54a080dfc6e72c0511b2b3db757585edffionaxu if (CarrierId.All.CONTENT_URI.getAuthority().equals( 206b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu uri.getAuthority())) { 207b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu MatrixCursor mc = new MatrixCursor( 208f24387f54a080dfc6e72c0511b2b3db757585edffionaxu new String[]{CarrierId._ID, 209f24387f54a080dfc6e72c0511b2b3db757585edffionaxu CarrierId.All.MCCMNC, 210f24387f54a080dfc6e72c0511b2b3db757585edffionaxu CarrierId.All.GID1, 211f24387f54a080dfc6e72c0511b2b3db757585edffionaxu CarrierId.All.GID2, 212f24387f54a080dfc6e72c0511b2b3db757585edffionaxu CarrierId.All.PLMN, 213f24387f54a080dfc6e72c0511b2b3db757585edffionaxu CarrierId.All.IMSI_PREFIX_XPATTERN, 214f24387f54a080dfc6e72c0511b2b3db757585edffionaxu CarrierId.All.ICCID_PREFIX, 215f24387f54a080dfc6e72c0511b2b3db757585edffionaxu CarrierId.All.SPN, 216f24387f54a080dfc6e72c0511b2b3db757585edffionaxu CarrierId.All.APN, 217f24387f54a080dfc6e72c0511b2b3db757585edffionaxu CarrierId.CARRIER_NAME, 218f24387f54a080dfc6e72c0511b2b3db757585edffionaxu CarrierId.CARRIER_ID}); 219b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 220b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu mc.addRow(new Object[] { 221b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 1, // id 222b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu MCCMNC, // mccmnc 223b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu null, // gid1 224b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu null, // gid2 225b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu null, // plmn 226b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu null, // imsi_prefix 227cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqian null, // iccid_prefix 228b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu null, // spn 229b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu null, // apn 230b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu NAME, // carrier name 231b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu CID_VZW, // cid 232b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu }); 233b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu mc.addRow(new Object[] { 234b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 2, // id 235b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu MCCMNC, // mccmnc 236b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu GID1, // gid1 237b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu null, // gid2 238b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu null, // plmn 239b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu null, // imsi_prefix 240cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqian null, // iccid_prefix 241b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu null, // spn 242b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu null, // apn 243b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu NAME_TMO, // carrier name 244b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu CID_TMO, // cid 245b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu }); 246b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu mc.addRow(new Object[] { 247b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 3, // id 248b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu MCCMNC, // mccmnc 249b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu null, // gid1 250b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu null, // gid2 251b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu null, // plmn 252b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu null, // imsi_prefix 253cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqian null, // iccid_prefix 254b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu SPN_FI, // spn 255b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu null, // apn 256b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu NAME_FI, // carrier name 257b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu CID_FI, // cid 258b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu }); 259b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu mc.addRow(new Object[] { 260b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 4, // id 261b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu MCCMNC, // mccmnc 262b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu null, // gid1 263b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu null, // gid2 264b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu null, // plmn 265b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu null, // imsi_prefix 266cf7ff3fc0bd693404c4edfd5071af6ce64b36e83sqian null, // iccid_prefix 267b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu null, // spn 268b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu APN_DOCOMO, // apn 269b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu NAME_DOCOMO, // carrier name 270b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu CID_DOCOMO, // cid 271b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu }); 272b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu return mc; 273b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu } else if (Carriers.CONTENT_URI.getAuthority().equals(uri.getAuthority())) { 274b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu MatrixCursor mc = new MatrixCursor(new String[]{Carriers._ID, Carriers.APN}); 275b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu mc.addRow(new Object[] { 276b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu 1, // id 277b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu APN_DOCOMO // apn 278b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu }); 279b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu return mc; 280b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu } 281b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu return null; 282b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu } 283a0a8091a01d43eae665bd10b0e5fea1ef2237b6ffionaxu @Override 284a0a8091a01d43eae665bd10b0e5fea1ef2237b6ffionaxu public int update(android.net.Uri uri, android.content.ContentValues values, 285a0a8091a01d43eae665bd10b0e5fea1ef2237b6ffionaxu java.lang.String selection, java.lang.String[] selectionArgs) { 286a0a8091a01d43eae665bd10b0e5fea1ef2237b6ffionaxu return 0; 287a0a8091a01d43eae665bd10b0e5fea1ef2237b6ffionaxu } 288b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu } 289b5c356fee2ce1be13fee506d1cc65927079d7b88fionaxu} 290