diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 90dcc4f..8bbe7b9 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -137,16 +137,15 @@
 
     // add for carrier feature
     private static Context sResPackageCtx;
-    private android.os.CountDownTimer mCountDownTimer;
 
     //Determine if WebView is Initialized or not
     private boolean mWebViewInitialized;
 
-    public static void initialize(final Context context) {    	
+    public static void initialize(final Context context) {
         sInstance = new BrowserSettings(context);
     }
 
-    public static BrowserSettings getInstance() {    	
+    public static BrowserSettings getInstance() {
         return sInstance;
     }
 
@@ -254,11 +253,7 @@
             }
 
             // add for carrier homepage feature
-            Object[] params  = { new String("persist.env.c.browser.resource"),
-                                 new String("default")};
-            Class[] type = new Class[] {String.class, String.class};
-            String browserRes = (String)ReflectHelper.invokeStaticMethod(
-                                "android.os.SystemProperties","get",type, params);
+            String browserRes = mContext.getResources().getString(R.string.config_carrier_resource);
             if ("cu".equals(browserRes) || "cmcc".equals(browserRes)) {
                 int resID = sResPackageCtx.getResources().getIdentifier(
                         "homepage_base", "string", "com.android.browser.res");
diff --git a/src/com/android/browser/BrowserWebViewFactory.java b/src/com/android/browser/BrowserWebViewFactory.java
index 4364b26..caa0cf8 100644
--- a/src/com/android/browser/BrowserWebViewFactory.java
+++ b/src/com/android/browser/BrowserWebViewFactory.java
@@ -65,11 +65,7 @@
         w.getSettings().setDisplayZoomControls(!supportsMultiTouch);
 
         // add for carrier homepage feature
-        Object[] params  = {new String("persist.env.c.browser.resource"),
-                            new String("default")};
-        Class[] type = new Class[] {String.class, String.class};
-        String browserRes = (String)ReflectHelper.invokeStaticMethod(
-                            "android.os.SystemProperties","get", type, params);
+        String browserRes = mContext.getResources().getString(R.string.config_carrier_resource);
         if ("ct".equals(browserRes)) {
             w.getSettings().setJavaScriptEnabled(true);
             if (mContext instanceof BrowserActivity) {
diff --git a/src/com/android/browser/TabControl.java b/src/com/android/browser/TabControl.java
index 66736cb..a1ebd72 100644
--- a/src/com/android/browser/TabControl.java
+++ b/src/com/android/browser/TabControl.java
@@ -417,12 +417,8 @@
                 // If the webview restore successfully, add javascript interface again.
                 WebView view = t.getWebView();
                 if (view != null) {
-                    Object[] params  = { new String("persist.env.c.browser.resource"),
-                                 new String("default")};
-                    Class[] type = new Class[] {String.class, String.class};
-                    String browserRes = (String)ReflectHelper.invokeStaticMethod(
-                        "android.os.SystemProperties","get",
-                        type, params);
+                    String browserRes = mController.getActivity().getApplicationContext()
+                            .getResources().getString(R.string.config_carrier_resource);
                     if ("ct".equals(browserRes)) {
                         view.getSettings().setJavaScriptEnabled(true);
                         if (mController.getActivity() instanceof BrowserActivity) {
diff --git a/src/com/android/browser/provider/BrowserProvider2.java b/src/com/android/browser/provider/BrowserProvider2.java
index cbb39b6..e37e7fe 100644
--- a/src/com/android/browser/provider/BrowserProvider2.java
+++ b/src/com/android/browser/provider/BrowserProvider2.java
@@ -658,12 +658,8 @@
             db.insertOrThrow(TABLE_BOOKMARKS, null, values);
 
             // add for carrier bookmark feature
-            Object[] params  = { new String("persist.env.c.browser.resource"),
-                                             new String("default")};
-                        Class[] type = new Class[] {String.class, String.class};
-                        String browserRes = (String)ReflectHelper.invokeStaticMethod(
-                                    "android.os.SystemProperties", "get",
-                                    type, params);
+            String browserRes = getContext().getResources().getString(
+                    R.string.config_carrier_resource);
 
             //don't add default bookmarks for cmcc
             if (!"cmcc".equals(browserRes)) {
