Home | History | Annotate | Download | only in mms
      1 /*
      2  * Copyright (C) 2015 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package android.support.v7.mms;
     18 
     19 import android.content.Context;
     20 import android.telephony.TelephonyManager;
     21 import android.text.TextUtils;
     22 import android.util.Log;
     23 
     24 /**
     25  * The default implementation of loader of UA and UAProfUrl
     26  */
     27 class DefaultUserAgentInfoLoader implements UserAgentInfoLoader {
     28     // Default values to be used as user agent info
     29     private static final String DEFAULT_USER_AGENT = "Android MmsLib/1.0";
     30     private static final String DEFAULT_UA_PROF_URL =
     31             "http://www.gstatic.com/android/sms/mms_ua_profile.xml";
     32 
     33     private Context mContext;
     34     private boolean mLoaded;
     35 
     36     private String mUserAgent;
     37     private String mUAProfUrl;
     38 
     39     DefaultUserAgentInfoLoader(final Context context) {
     40         mContext = context;
     41     }
     42 
     43     @Override
     44     public String getUserAgent() {
     45         load();
     46         return mUserAgent;
     47     }
     48 
     49     @Override
     50     public String getUAProfUrl() {
     51         load();
     52         return mUAProfUrl;
     53     }
     54 
     55     private void load() {
     56         if (mLoaded) {
     57             return;
     58         }
     59         boolean didLoad = false;
     60         synchronized (this) {
     61             if (!mLoaded) {
     62                 loadLocked();
     63                 mLoaded = true;
     64                 didLoad = true;
     65             }
     66         }
     67         if (didLoad) {
     68             Log.i(MmsService.TAG, "Loaded user agent info: "
     69                     + "UA=" + mUserAgent + ", UAProfUrl=" + mUAProfUrl);
     70         }
     71     }
     72 
     73     private void loadLocked() {
     74         if (Utils.hasUserAgentApi()) {
     75             // load the MMS User agent and UaProfUrl from TelephonyManager APIs
     76             final TelephonyManager telephonyManager = (TelephonyManager) mContext.getSystemService(
     77                     Context.TELEPHONY_SERVICE);
     78             mUserAgent = telephonyManager.getMmsUserAgent();
     79             mUAProfUrl = telephonyManager.getMmsUAProfUrl();
     80         }
     81         if (TextUtils.isEmpty(mUserAgent)) {
     82             mUserAgent = DEFAULT_USER_AGENT;
     83         }
     84         if (TextUtils.isEmpty(mUAProfUrl)) {
     85             mUAProfUrl = DEFAULT_UA_PROF_URL;
     86         }
     87     }
     88 }
     89