19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage com.android.internal.telephony.gsm; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.android.internal.telephony.*; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This class represents a apn setting for create PDP link 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class ApnSetting { 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String carrier; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String apn; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String proxy; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String port; 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String mmsc; 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String mmsProxy; 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String mmsPort; 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String user; 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String password; 342811f1625ebdb7f7483b8b866694474f89112d8cJaikumar Ganesh int authType; 3578b6e899145b08bbb8ccf3f12ecf0a5bb792033bRobert Greenwalt public String[] types; 36fe3492dde042cc6646e63f12a237773391806328John Huang int id; 37fe3492dde042cc6646e63f12a237773391806328John Huang String numeric; 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4078b6e899145b08bbb8ccf3f12ecf0a5bb792033bRobert Greenwalt public ApnSetting(int id, String numeric, String carrier, String apn, String proxy, String port, 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String mmsc, String mmsProxy, String mmsPort, 422811f1625ebdb7f7483b8b866694474f89112d8cJaikumar Ganesh String user, String password, int authType, String[] types) { 43fe3492dde042cc6646e63f12a237773391806328John Huang this.id = id; 44fe3492dde042cc6646e63f12a237773391806328John Huang this.numeric = numeric; 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.carrier = carrier; 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.apn = apn; 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.proxy = proxy; 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.port = port; 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.mmsc = mmsc; 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.mmsProxy = mmsProxy; 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.mmsPort = mmsPort; 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.user = user; 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.password = password; 542811f1625ebdb7f7483b8b866694474f89112d8cJaikumar Ganesh this.authType = authType; 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.types = types; 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5877b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt // data[0] = name 5977b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt // data[1] = apn 6077b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt // data[2] = proxy 6177b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt // data[3] = port 6277b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt // data[4] = username 6377b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt // data[5] = password 6477b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt // data[6] = server 6577b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt // data[7] = mmsc 6677b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt // data[8] = mmsproxy 6777b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt // data[9] = mmsport 6877b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt // data[10] = mcc 6977b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt // data[11] = mnc 7077b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt // data[12] = auth 7177b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt // data[13] = first type... 7277b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt public static ApnSetting fromString(String data) { 7377b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt if (data == null) return null; 7477b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt String[] a = data.split("\\s*,\\s*"); 7577b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt if (a.length < 14) return null; 7677b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt int authType = 0; 7777b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt try { 7877b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt authType = Integer.parseInt(a[12]); 7977b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt } catch (Exception e) { 8077b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt } 8177b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt String[] typeArray = new String[a.length - 13]; 8277b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt System.arraycopy(a, 13, typeArray, 0, a.length - 13); 8377b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt return new ApnSetting(-1,a[10]+a[11],a[0],a[1],a[2],a[3],a[7],a[8], 8477b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt a[9],a[4],a[5],authType,typeArray); 8577b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt } 8677b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toString() { 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project StringBuilder sb = new StringBuilder(); 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append(carrier) 90fe3492dde042cc6646e63f12a237773391806328John Huang .append(", ").append(id) 91fe3492dde042cc6646e63f12a237773391806328John Huang .append(", ").append(numeric) 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project .append(", ").append(apn) 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project .append(", ").append(proxy) 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project .append(", ").append(mmsc) 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project .append(", ").append(mmsProxy) 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project .append(", ").append(mmsPort) 972811f1625ebdb7f7483b8b866694474f89112d8cJaikumar Ganesh .append(", ").append(port) 982811f1625ebdb7f7483b8b866694474f89112d8cJaikumar Ganesh .append(", ").append(authType); 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (String t : types) { 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append(", ").append(t); 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return sb.toString(); 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10578b6e899145b08bbb8ccf3f12ecf0a5bb792033bRobert Greenwalt public boolean canHandleType(String type) { 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (String t : types) { 10742acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt // DEFAULT handles all, and HIPRI is handled by DEFAULT 10842acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt if (t.equals(type) || t.equals(Phone.APN_TYPE_ALL) || 10942acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt (t.equals(Phone.APN_TYPE_DEFAULT) && 11042acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt type.equals(Phone.APN_TYPE_HIPRI))) { 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 117