/* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.messaging.sms; import android.content.Context; import android.support.v7.mms.UserAgentInfoLoader; import android.telephony.TelephonyManager; import android.text.TextUtils; import com.android.messaging.util.BugleGservices; import com.android.messaging.util.BugleGservicesKeys; import com.android.messaging.util.LogUtil; import com.android.messaging.util.OsUtil; import com.android.messaging.util.VersionUtil; /** * User agent and UA profile URL loader */ public class BugleUserAgentInfoLoader implements UserAgentInfoLoader { private static final String DEFAULT_USER_AGENT_PREFIX = "Bugle/"; private Context mContext; private boolean mLoaded; private String mUserAgent; private String mUAProfUrl; public BugleUserAgentInfoLoader(final Context context) { mContext = context; } @Override public String getUserAgent() { load(); return mUserAgent; } @Override public String getUAProfUrl() { load(); return mUAProfUrl; } private void load() { if (mLoaded) { return; } boolean didLoad = false; synchronized (this) { if (!mLoaded) { loadLocked(); mLoaded = true; didLoad = true; } } if (didLoad) { LogUtil.i(LogUtil.BUGLE_TAG, "Loaded user agent info: " + "UA=" + mUserAgent + ", UAProfUrl=" + mUAProfUrl); } } private void loadLocked() { if (OsUtil.isAtLeastKLP()) { // load the MMS User agent and UaProfUrl from TelephonyManager APIs final TelephonyManager telephonyManager = (TelephonyManager) mContext.getSystemService( Context.TELEPHONY_SERVICE); mUserAgent = telephonyManager.getMmsUserAgent(); mUAProfUrl = telephonyManager.getMmsUAProfUrl(); } // if user agent string isn't set, use the format "Bugle/". if (TextUtils.isEmpty(mUserAgent)) { final String simpleVersionName = VersionUtil.getInstance(mContext).getSimpleName(); mUserAgent = DEFAULT_USER_AGENT_PREFIX + simpleVersionName; } // if the UAProfUrl isn't set, get it from Gservices if (TextUtils.isEmpty(mUAProfUrl)) { mUAProfUrl = BugleGservices.get().getString( BugleGservicesKeys.MMS_UA_PROFILE_URL, BugleGservicesKeys.MMS_UA_PROFILE_URL_DEFAULT); } } }