package com.android.mms.service_alt; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteException; import android.os.Build; import android.provider.Telephony; import android.util.Log; import com.google.android.mms.util_alt.SqliteWrapper; class SubscriptionIdChecker { private static final String TAG = "SubscriptionIdChecker"; private static SubscriptionIdChecker sInstance; private boolean mCanUseSubscriptionId = false; // I met a device which does not have Telephony.Mms.SUBSCRIPTION_ID event if it's API Level is 22. private void check(Context context) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { Cursor c = null; try { c = SqliteWrapper.query(context, context.getContentResolver(), Telephony.Mms.CONTENT_URI, new String[]{Telephony.Mms.SUBSCRIPTION_ID}, null, null, null); if (c != null) { mCanUseSubscriptionId = true; } } catch (SQLiteException e) { Log.e(TAG, "SubscriptionIdChecker.check() fail"); } finally { if (c != null) { c.close(); } } } } static synchronized SubscriptionIdChecker getInstance(Context context) { if (sInstance == null) { sInstance = new SubscriptionIdChecker(); sInstance.check(context); } return sInstance; } boolean canUseSubscriptionId() { return mCanUseSubscriptionId; } }