All Fragments are now support library Fragments.

Switch a bunch of imports to support library Fragments (and Loaders) instead of framework Fragments (and Loaders). This was needed to use FragmentManager.isStateSaved() instead of manually tracking that state. This should reduce errors around committing after state is saved.

Also adds METADATA presubmit to prevent new usages of framework Fragments or Loaders.

Bug: 38241305
Test: Covered by existing tests.
PiperOrigin-RevId: 160202511
Change-Id: I5dc0b467da984ca571e49b4dfa0deea44eb372b2
diff --git a/java/com/android/contacts/common/ContactTileLoaderFactory.java b/java/com/android/contacts/common/ContactTileLoaderFactory.java
index d71472e..0791517 100644
--- a/java/com/android/contacts/common/ContactTileLoaderFactory.java
+++ b/java/com/android/contacts/common/ContactTileLoaderFactory.java
@@ -16,12 +16,12 @@
 package com.android.contacts.common;
 
 import android.content.Context;
-import android.content.CursorLoader;
 import android.net.Uri;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.Contacts;
 import android.support.annotation.VisibleForTesting;
+import android.support.v4.content.CursorLoader;
 
 /**
  * Used to create {@link CursorLoader} which finds contacts information from the strequents table.
diff --git a/java/com/android/contacts/common/dialog/ClearFrequentsDialog.java b/java/com/android/contacts/common/dialog/ClearFrequentsDialog.java
index 751490a..60c7fc0 100644
--- a/java/com/android/contacts/common/dialog/ClearFrequentsDialog.java
+++ b/java/com/android/contacts/common/dialog/ClearFrequentsDialog.java
@@ -18,8 +18,6 @@
 
 import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.FragmentManager;
 import android.app.ProgressDialog;
 import android.content.ContentResolver;
 import android.content.Context;
@@ -28,6 +26,8 @@
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.provider.ContactsContract;
+import android.support.v4.app.DialogFragment;
+import android.support.v4.app.FragmentManager;
 import com.android.contacts.common.R;
 import com.android.dialer.util.PermissionsUtil;
 
diff --git a/java/com/android/contacts/common/list/ContactEntryListAdapter.java b/java/com/android/contacts/common/list/ContactEntryListAdapter.java
index 7335297..19e43d8 100644
--- a/java/com/android/contacts/common/list/ContactEntryListAdapter.java
+++ b/java/com/android/contacts/common/list/ContactEntryListAdapter.java
@@ -16,7 +16,6 @@
 package com.android.contacts.common.list;
 
 import android.content.Context;
-import android.content.CursorLoader;
 import android.content.res.Resources;
 import android.database.Cursor;
 import android.net.Uri;
@@ -25,6 +24,7 @@
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Directory;
+import android.support.v4.content.CursorLoader;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
diff --git a/java/com/android/contacts/common/list/ContactEntryListFragment.java b/java/com/android/contacts/common/list/ContactEntryListFragment.java
index 04658be..d39c5af 100644
--- a/java/com/android/contacts/common/list/ContactEntryListFragment.java
+++ b/java/com/android/contacts/common/list/ContactEntryListFragment.java
@@ -16,12 +16,7 @@
 
 package com.android.contacts.common.list;
 
-import android.app.Fragment;
-import android.app.LoaderManager;
-import android.app.LoaderManager.LoaderCallbacks;
 import android.content.Context;
-import android.content.CursorLoader;
-import android.content.Loader;
 import android.database.Cursor;
 import android.os.Bundle;
 import android.os.Handler;
@@ -29,6 +24,11 @@
 import android.os.Parcelable;
 import android.provider.ContactsContract.Directory;
 import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.LoaderManager;
+import android.support.v4.app.LoaderManager.LoaderCallbacks;
+import android.support.v4.content.CursorLoader;
+import android.support.v4.content.Loader;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
diff --git a/java/com/android/contacts/common/list/DefaultContactListAdapter.java b/java/com/android/contacts/common/list/DefaultContactListAdapter.java
index 7bcae0e..115434e 100644
--- a/java/com/android/contacts/common/list/DefaultContactListAdapter.java
+++ b/java/com/android/contacts/common/list/DefaultContactListAdapter.java
@@ -16,7 +16,6 @@
 package com.android.contacts.common.list;
 
 import android.content.Context;
-import android.content.CursorLoader;
 import android.content.SharedPreferences;
 import android.database.Cursor;
 import android.net.Uri;
@@ -26,6 +25,7 @@
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Directory;
 import android.provider.ContactsContract.SearchSnippets;
+import android.support.v4.content.CursorLoader;
 import android.text.TextUtils;
 import android.view.View;
 import com.android.contacts.common.compat.ContactsCompat;
diff --git a/java/com/android/contacts/common/list/DirectoryListLoader.java b/java/com/android/contacts/common/list/DirectoryListLoader.java
index be62cc7..89c6b2f 100644
--- a/java/com/android/contacts/common/list/DirectoryListLoader.java
+++ b/java/com/android/contacts/common/list/DirectoryListLoader.java
@@ -15,7 +15,6 @@
  */
 package com.android.contacts.common.list;
 
-import android.content.AsyncTaskLoader;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.database.ContentObserver;
@@ -24,6 +23,7 @@
 import android.net.Uri;
 import android.os.Handler;
 import android.provider.ContactsContract.Directory;
+import android.support.v4.content.AsyncTaskLoader;
 import android.text.TextUtils;
 import com.android.contacts.common.R;
 import com.android.contacts.common.compat.DirectoryCompat;
diff --git a/java/com/android/contacts/common/list/PhoneNumberListAdapter.java b/java/com/android/contacts/common/list/PhoneNumberListAdapter.java
index d1118c3..3950247 100644
--- a/java/com/android/contacts/common/list/PhoneNumberListAdapter.java
+++ b/java/com/android/contacts/common/list/PhoneNumberListAdapter.java
@@ -17,7 +17,6 @@
 package com.android.contacts.common.list;
 
 import android.content.Context;
-import android.content.CursorLoader;
 import android.database.Cursor;
 import android.net.Uri;
 import android.net.Uri.Builder;
@@ -27,6 +26,7 @@
 import android.provider.ContactsContract.CommonDataKinds.SipAddress;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Directory;
+import android.support.v4.content.CursorLoader;
 import android.text.TextUtils;
 import android.view.View;
 import android.view.ViewGroup;
diff --git a/java/com/android/contacts/common/list/PhoneNumberPickerFragment.java b/java/com/android/contacts/common/list/PhoneNumberPickerFragment.java
index 558f3b2..e9083ae 100644
--- a/java/com/android/contacts/common/list/PhoneNumberPickerFragment.java
+++ b/java/com/android/contacts/common/list/PhoneNumberPickerFragment.java
@@ -17,11 +17,11 @@
 
 import android.content.ComponentName;
 import android.content.Intent;
-import android.content.Loader;
 import android.database.Cursor;
 import android.os.Bundle;
 import android.support.annotation.MainThread;
 import android.support.annotation.Nullable;
+import android.support.v4.content.Loader;
 import android.text.TextUtils;
 import android.util.ArraySet;
 import android.view.LayoutInflater;
diff --git a/java/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java b/java/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java
index 8156d97..99c1846 100644
--- a/java/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java
+++ b/java/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java
@@ -19,13 +19,13 @@
 import android.annotation.SuppressLint;
 import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.DialogFragment;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.ResultReceiver;
 import android.support.annotation.Nullable;
+import android.support.v4.app.DialogFragment;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
diff --git a/java/com/android/dialer/app/DialtactsActivity.java b/java/com/android/dialer/app/DialtactsActivity.java
index 1c9718e..48c9167 100644
--- a/java/com/android/dialer/app/DialtactsActivity.java
+++ b/java/com/android/dialer/app/DialtactsActivity.java
@@ -16,8 +16,6 @@
 
 package com.android.dialer.app;
 
-import android.app.Fragment;
-import android.app.FragmentTransaction;
 import android.app.KeyguardManager;
 import android.content.ActivityNotFoundException;
 import android.content.Context;
@@ -40,6 +38,8 @@
 import android.support.design.widget.FloatingActionButton;
 import android.support.design.widget.Snackbar;
 import android.support.v4.app.ActivityCompat;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentTransaction;
 import android.support.v4.view.ViewPager;
 import android.support.v7.app.ActionBar;
 import android.telecom.PhoneAccount;
@@ -204,11 +204,6 @@
   private Animation mSlideOut;
   /** Fragment containing the speed dial list, call history list, and all contacts list. */
   private ListsFragment mListsFragment;
-  /**
-   * Tracks whether onSaveInstanceState has been called. If true, no fragment transactions can be
-   * commited.
-   */
-  private boolean mStateSaved;
 
   private boolean mIsRestarting;
   private boolean mInDialpadSearch;
@@ -405,12 +400,12 @@
     actionBar.setBackgroundDrawable(null);
 
     SearchEditTextLayout searchEditTextLayout =
-        (SearchEditTextLayout) actionBar.getCustomView().findViewById(R.id.search_view_container);
+        actionBar.getCustomView().findViewById(R.id.search_view_container);
     searchEditTextLayout.setPreImeKeyListener(mSearchEditTextLayoutListener);
 
     mActionBarController = new ActionBarController(this, searchEditTextLayout);
 
-    mSearchView = (EditText) searchEditTextLayout.findViewById(R.id.search_view);
+    mSearchView = searchEditTextLayout.findViewById(R.id.search_view);
     mSearchView.addTextChangedListener(mPhoneSearchQueryTextListener);
     mVoiceSearchButton = searchEditTextLayout.findViewById(R.id.voice_search_button);
     searchEditTextLayout
@@ -433,14 +428,13 @@
     mIsLandscape =
         getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
     mPreviouslySelectedTabIndex = DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL;
-    FloatingActionButton floatingActionButton =
-        (FloatingActionButton) findViewById(R.id.floating_action_button);
+    FloatingActionButton floatingActionButton = findViewById(R.id.floating_action_button);
     floatingActionButton.setOnClickListener(this);
     mFloatingActionButtonController =
         new FloatingActionButtonController(this, floatingActionButton);
 
     ImageButton optionsMenuButton =
-        (ImageButton) searchEditTextLayout.findViewById(R.id.dialtacts_options_menu_button);
+        searchEditTextLayout.findViewById(R.id.dialtacts_options_menu_button);
     optionsMenuButton.setOnClickListener(this);
     mOverflowMenu = buildOptionsMenu(optionsMenuButton);
     optionsMenuButton.setOnTouchListener(mOverflowMenu.getDragToOpenListener());
@@ -448,7 +442,7 @@
     // Add the favorites fragment but only if savedInstanceState is null. Otherwise the
     // fragment manager is responsible for recreating it.
     if (savedInstanceState == null) {
-      getFragmentManager()
+      getSupportFragmentManager()
           .beginTransaction()
           .add(R.id.dialtacts_frame, new ListsFragment(), TAG_FAVORITES_FRAGMENT)
           .commit();
@@ -481,7 +475,7 @@
     mSlideIn.setAnimationListener(mSlideInListener);
     mSlideOut.setAnimationListener(mSlideOutListener);
 
-    mParentLayout = (CoordinatorLayout) findViewById(R.id.dialtacts_mainlayout);
+    mParentLayout = findViewById(R.id.dialtacts_mainlayout);
     mParentLayout.setOnDragListener(new LayoutOnDragListener());
     ViewUtil.doOnGlobalLayout(
         floatingActionButton,
@@ -521,7 +515,6 @@
       PerformanceReport.startRecording();
     }
 
-    mStateSaved = false;
     if (mFirstLaunch) {
       displayFragment(getIntent());
     } else if (!phoneIsInUse() && mInCallDialpadUp) {
@@ -651,7 +644,6 @@
     outState.putBoolean(KEY_IS_DIALPAD_SHOWN, mIsDialpadShown);
     outState.putBoolean(KEY_WAS_CONFIGURATION_CHANGE, isChangingConfigurations());
     mActionBarController.saveInstanceState(outState);
-    mStateSaved = true;
   }
 
   @Override
@@ -660,7 +652,7 @@
     if (fragment instanceof DialpadFragment) {
       mDialpadFragment = (DialpadFragment) fragment;
       if (!mIsDialpadShown && !mShowDialpadOnResume) {
-        final FragmentTransaction transaction = getFragmentManager().beginTransaction();
+        final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
         transaction.hide(mDialpadFragment);
         transaction.commit();
       }
@@ -747,7 +739,7 @@
       final Intent intent = new Intent(this, CallLogActivity.class);
       startActivity(intent);
     } else if (resId == R.id.menu_clear_frequents) {
-      ClearFrequentsDialog.show(getFragmentManager());
+      ClearFrequentsDialog.show(getSupportFragmentManager());
       Logger.get(this).logScreenView(ScreenEvent.Type.CLEAR_FREQUENTS, this);
       return true;
     } else if (resId == R.id.menu_call_settings) {
@@ -824,14 +816,14 @@
    */
   private void showDialpadFragment(boolean animate) {
     LogUtil.d("DialtactActivity.showDialpadFragment", "animate: %b", animate);
-    if (mIsDialpadShown || mStateSaved) {
+    if (mIsDialpadShown || getSupportFragmentManager().isStateSaved()) {
       return;
     }
     mIsDialpadShown = true;
 
     mListsFragment.setUserVisibleHint(false);
 
-    final FragmentTransaction ft = getFragmentManager().beginTransaction();
+    final FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
     if (mDialpadFragment == null) {
       mDialpadFragment = new DialpadFragment();
       ft.add(R.id.dialtacts_container, mDialpadFragment, TAG_DIALPAD_FRAGMENT);
@@ -854,7 +846,7 @@
 
     Assert.isNotNull(mListsFragment.getView()).animate().alpha(0).withLayer();
 
-    //adjust the title, so the user will know where we're at when the activity start/resumes.
+    // adjust the title, so the user will know where we're at when the activity start/resumes.
     setTitle(R.string.launcherDialpadActivityLabel);
   }
 
@@ -916,17 +908,17 @@
         exitSearchUi();
       }
     }
-    //reset the title to normal.
+    // reset the title to normal.
     setTitle(R.string.launcherActivityLabel);
   }
 
   /** Finishes hiding the dialpad fragment after any animations are completed. */
   private void commitDialpadFragmentHide() {
-    if (!mStateSaved
+    if (!getSupportFragmentManager().isStateSaved()
         && mDialpadFragment != null
         && !mDialpadFragment.isHidden()
         && !isDestroyed()) {
-      final FragmentTransaction ft = getFragmentManager().beginTransaction();
+      final FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
       ft.hide(mDialpadFragment);
       ft.commit();
     }
@@ -998,8 +990,7 @@
   /** Sets the hint text for the contacts search box */
   private void setSearchBoxHint() {
     SearchEditTextLayout searchEditTextLayout =
-        (SearchEditTextLayout)
-            getActionBarSafely().getCustomView().findViewById(R.id.search_view_container);
+        getActionBarSafely().getCustomView().findViewById(R.id.search_view_container);
     ((TextView) searchEditTextLayout.findViewById(R.id.search_box_start_search))
         .setHint(getSearchBoxHint());
   }
@@ -1089,7 +1080,6 @@
     setIntent(newIntent);
     mFirstLaunch = true;
 
-    mStateSaved = false;
     displayFragment(newIntent);
 
     invalidateOptionsMenu();
@@ -1112,7 +1102,7 @@
 
   /** Shows the search fragment */
   private void enterSearchUi(boolean smartDialSearch, String query, boolean animate) {
-    if (mStateSaved || getFragmentManager().isDestroyed()) {
+    if (getSupportFragmentManager().isStateSaved() || getSupportFragmentManager().isDestroyed()) {
       // Weird race condition where fragment is doing work after the activity is destroyed
       // due to talkback being on (b/10209937). Just return since we can't do any
       // constructive here.
@@ -1123,7 +1113,7 @@
       LogUtil.v("DialtactsActivity.enterSearchUi", "smart dial " + smartDialSearch);
     }
 
-    final FragmentTransaction transaction = getFragmentManager().beginTransaction();
+    final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
     if (mInDialpadSearch && mSmartDialSearchFragment != null) {
       transaction.remove(mSmartDialSearchFragment);
     } else if (mInRegularSearch && mRegularSearchFragment != null) {
@@ -1151,7 +1141,7 @@
       transaction.setTransition(FragmentTransaction.TRANSIT_NONE);
     }
 
-    Fragment fragment = getFragmentManager().findFragmentByTag(tag);
+    Fragment fragment = getSupportFragmentManager().findFragmentByTag(tag);
     if (fragment == null) {
       if (useNewSearch) {
         fragment = new NewSearchFragment();
@@ -1209,7 +1199,7 @@
   /** Hides the search fragment */
   private void exitSearchUi() {
     // See related bug in enterSearchUI();
-    if (getFragmentManager().isDestroyed() || mStateSaved) {
+    if (getSupportFragmentManager().isStateSaved() || getSupportFragmentManager().isDestroyed()) {
       return;
     }
 
@@ -1229,7 +1219,7 @@
     onPageScrolled(mListsFragment.getCurrentTabIndex(), 0 /* offset */, 0 /* pixelOffset */);
     onPageSelected(mListsFragment.getCurrentTabIndex());
 
-    final FragmentTransaction transaction = getFragmentManager().beginTransaction();
+    final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
     if (mSmartDialSearchFragment != null) {
       transaction.remove(mSmartDialSearchFragment);
     }
@@ -1258,7 +1248,7 @@
   public void onBackPressed() {
     PerformanceReport.recordClick(UiAction.Type.PRESS_ANDROID_BACK_BUTTON);
 
-    if (mStateSaved) {
+    if (getSupportFragmentManager().isStateSaved()) {
       return;
     }
     if (mIsDialpadShown) {
diff --git a/java/com/android/dialer/app/SpecialCharSequenceMgr.java b/java/com/android/dialer/app/SpecialCharSequenceMgr.java
index 20222d6..0d4182c 100644
--- a/java/com/android/dialer/app/SpecialCharSequenceMgr.java
+++ b/java/com/android/dialer/app/SpecialCharSequenceMgr.java
@@ -16,9 +16,7 @@
 
 package com.android.dialer.app;
 
-import android.app.Activity;
 import android.app.AlertDialog;
-import android.app.DialogFragment;
 import android.app.KeyguardManager;
 import android.app.ProgressDialog;
 import android.content.ActivityNotFoundException;
@@ -30,6 +28,8 @@
 import android.net.Uri;
 import android.provider.Settings;
 import android.support.annotation.Nullable;
+import android.support.v4.app.DialogFragment;
+import android.support.v4.app.FragmentActivity;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.PhoneNumberUtils;
@@ -96,7 +96,7 @@
   private SpecialCharSequenceMgr() {}
 
   public static boolean handleChars(Context context, String input, EditText textField) {
-    //get rid of the separators so that the string gets parsed correctly
+    // get rid of the separators so that the string gets parsed correctly
     String dialString = PhoneNumberUtils.stripSeparators(input);
 
     if (handleDeviceIdDisplay(context, dialString)
@@ -223,7 +223,8 @@
           DialogFragment dialogFragment =
               SelectPhoneAccountDialogFragment.newInstance(
                   subscriptionAccountHandles, callback, null);
-          dialogFragment.show(((Activity) context).getFragmentManager(), TAG_SELECT_ACCT_FRAGMENT);
+          dialogFragment.show(
+              ((FragmentActivity) context).getSupportFragmentManager(), TAG_SELECT_ACCT_FRAGMENT);
         }
 
         return true;
@@ -278,7 +279,8 @@
         DialogFragment dialogFragment =
             SelectPhoneAccountDialogFragment.newInstance(
                 subscriptionAccountHandles, listener, null);
-        dialogFragment.show(((Activity) context).getFragmentManager(), TAG_SELECT_ACCT_FRAGMENT);
+        dialogFragment.show(
+            ((FragmentActivity) context).getSupportFragmentManager(), TAG_SELECT_ACCT_FRAGMENT);
       }
       return true;
     }
diff --git a/java/com/android/dialer/app/calllog/BlockReportSpamListener.java b/java/com/android/dialer/app/calllog/BlockReportSpamListener.java
index 28082df..7c324ff 100644
--- a/java/com/android/dialer/app/calllog/BlockReportSpamListener.java
+++ b/java/com/android/dialer/app/calllog/BlockReportSpamListener.java
@@ -16,11 +16,11 @@
 
 package com.android.dialer.app.calllog;
 
-import android.app.FragmentManager;
 import android.content.ContentValues;
 import android.content.Context;
 import android.net.Uri;
 import android.support.annotation.NonNull;
+import android.support.v4.app.FragmentManager;
 import android.support.v7.widget.RecyclerView;
 import com.android.dialer.blocking.BlockReportSpamDialogs;
 import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
diff --git a/java/com/android/dialer/app/calllog/CallLogActivity.java b/java/com/android/dialer/app/calllog/CallLogActivity.java
index 35e05bc..449e457 100644
--- a/java/com/android/dialer/app/calllog/CallLogActivity.java
+++ b/java/com/android/dialer/app/calllog/CallLogActivity.java
@@ -15,14 +15,14 @@
  */
 package com.android.dialer.app.calllog;
 
-import android.app.Fragment;
-import android.app.FragmentManager;
 import android.content.Intent;
 import android.os.Bundle;
 import android.provider.CallLog;
 import android.provider.CallLog.Calls;
 import android.support.design.widget.Snackbar;
-import android.support.v13.app.FragmentPagerAdapter;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentPagerAdapter;
 import android.support.v4.view.ViewPager;
 import android.support.v7.app.ActionBar;
 import android.view.Menu;
@@ -84,14 +84,14 @@
     mTabTitles[0] = getString(R.string.call_log_all_title);
     mTabTitles[1] = getString(R.string.call_log_missed_title);
 
-    mViewPager = (ViewPager) findViewById(R.id.call_log_pager);
+    mViewPager = findViewById(R.id.call_log_pager);
 
-    mViewPagerAdapter = new ViewPagerAdapter(getFragmentManager());
+    mViewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
     mViewPager.setAdapter(mViewPagerAdapter);
     mViewPager.setOffscreenPageLimit(1);
     mViewPager.setOnPageChangeListener(this);
 
-    mViewPagerTabs = (ViewPagerTabs) findViewById(R.id.viewpager_header);
+    mViewPagerTabs = findViewById(R.id.viewpager_header);
 
     mViewPagerTabs.setViewPager(mViewPager);
     mViewPager.setCurrentItem(startingTab);
@@ -148,7 +148,7 @@
       startActivity(intent);
       return true;
     } else if (item.getItemId() == R.id.delete_all) {
-      ClearCallLogDialog.show(getFragmentManager(), this);
+      ClearCallLogDialog.show(getSupportFragmentManager(), this);
       return true;
     }
     return super.onOptionsItemSelected(item);
diff --git a/java/com/android/dialer/app/calllog/CallLogAdapter.java b/java/com/android/dialer/app/calllog/CallLogAdapter.java
index b1edd06..f2db134 100644
--- a/java/com/android/dialer/app/calllog/CallLogAdapter.java
+++ b/java/com/android/dialer/app/calllog/CallLogAdapter.java
@@ -35,6 +35,7 @@
 import android.support.annotation.Nullable;
 import android.support.annotation.VisibleForTesting;
 import android.support.annotation.WorkerThread;
+import android.support.v4.app.FragmentActivity;
 import android.support.v7.app.AlertDialog;
 import android.support.v7.widget.RecyclerView;
 import android.support.v7.widget.RecyclerView.ViewHolder;
@@ -497,7 +498,7 @@
     mBlockReportSpamListener =
         new BlockReportSpamListener(
             mActivity,
-            ((Activity) mActivity).getFragmentManager(),
+            ((FragmentActivity) mActivity).getSupportFragmentManager(),
             this,
             mFilteredNumberAsyncQueryHandler);
     setHasStableIds(true);
diff --git a/java/com/android/dialer/app/calllog/CallLogFragment.java b/java/com/android/dialer/app/calllog/CallLogFragment.java
index aa765d9..49ed31e 100644
--- a/java/com/android/dialer/app/calllog/CallLogFragment.java
+++ b/java/com/android/dialer/app/calllog/CallLogFragment.java
@@ -19,7 +19,6 @@
 import static android.Manifest.permission.READ_CALL_LOG;
 
 import android.app.Activity;
-import android.app.Fragment;
 import android.app.KeyguardManager;
 import android.content.ContentResolver;
 import android.content.Context;
@@ -34,9 +33,7 @@
 import android.provider.ContactsContract;
 import android.support.annotation.CallSuper;
 import android.support.annotation.Nullable;
-import android.support.v13.app.FragmentCompat;
-import android.support.v13.app.FragmentCompat.OnRequestPermissionsResultCallback;
-import android.support.v7.app.AppCompatActivity;
+import android.support.v4.app.Fragment;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.view.LayoutInflater;
@@ -80,7 +77,6 @@
         CallFetcher,
         MultiSelectRemoveView,
         OnEmptyViewActionButtonClickedListener,
-        OnRequestPermissionsResultCallback,
         CallLogModalAlertManager.Listener,
         OnClickListener {
   private static final String KEY_FILTER_TYPE = "filter_type";
@@ -306,21 +302,21 @@
   }
 
   protected void setupView(View view) {
-    mRecyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
+    mRecyclerView = view.findViewById(R.id.recycler_view);
     mRecyclerView.setHasFixedSize(true);
     mLayoutManager = new LinearLayoutManager(getActivity());
     mRecyclerView.setLayoutManager(mLayoutManager);
     PerformanceReport.logOnScrollStateChange(mRecyclerView);
-    mEmptyListView = (EmptyContentView) view.findViewById(R.id.empty_list_view);
+    mEmptyListView = view.findViewById(R.id.empty_list_view);
     mEmptyListView.setImage(R.drawable.empty_call_log);
     mEmptyListView.setActionClickedListener(this);
-    mModalAlertView = (ViewGroup) view.findViewById(R.id.modal_message_container);
+    mModalAlertView = view.findViewById(R.id.modal_message_container);
     mModalAlertManager =
         new CallLogModalAlertManager(LayoutInflater.from(getContext()), mModalAlertView, this);
     mMultiSelectUnSelectAllViewContent =
         view.findViewById(R.id.multi_select_select_all_view_content);
-    mSelectUnselectAllViewText = (TextView) view.findViewById(R.id.select_all_view_text);
-    mSelectUnselectAllIcon = (ImageView) view.findViewById(R.id.select_all_view_icon);
+    mSelectUnselectAllViewText = view.findViewById(R.id.select_all_view_text);
+    mSelectUnselectAllIcon = view.findViewById(R.id.select_all_view_icon);
     mMultiSelectUnSelectAllViewContent.setOnClickListener(null);
     mSelectUnselectAllIcon.setOnClickListener(this);
     mSelectUnselectAllViewText.setOnClickListener(this);
@@ -335,8 +331,7 @@
 
     mContactInfoCache =
         new ContactInfoCache(
-            ExpirableCacheHeadlessFragment.attach((AppCompatActivity) getActivity())
-                .getRetainedCache(),
+            ExpirableCacheHeadlessFragment.attach(this).getRetainedCache(),
             new ContactInfoHelper(getActivity(), currentCountryIso),
             mOnContactInfoChangedListener);
     mAdapter =
@@ -575,7 +570,7 @@
       LogUtil.i(
           "CallLogFragment.onEmptyViewActionButtonClicked",
           "Requesting permissions: " + Arrays.toString(deniedPermissions));
-      FragmentCompat.requestPermissions(this, deniedPermissions, PHONE_PERMISSIONS_REQUEST_CODE);
+      requestPermissions(deniedPermissions, PHONE_PERMISSIONS_REQUEST_CODE);
     } else if (!mIsCallLogActivity) {
       // Show dialpad if we are not in the call log activity.
       ((HostInterface) activity).showDialpad();
diff --git a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
index 5cf33ca..d0ba31f 100644
--- a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
+++ b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
@@ -30,6 +30,7 @@
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.annotation.VisibleForTesting;
+import android.support.v4.app.FragmentActivity;
 import android.support.v7.widget.CardView;
 import android.support.v7.widget.RecyclerView;
 import android.telecom.PhoneAccount;
@@ -991,7 +992,7 @@
 
   private void maybeShowBlockNumberMigrationDialog(BlockedNumbersMigrator.Listener listener) {
     if (!FilteredNumberCompat.maybeShowBlockNumberMigrationDialog(
-        mContext, ((Activity) mContext).getFragmentManager(), listener)) {
+        mContext, ((FragmentActivity) mContext).getSupportFragmentManager(), listener)) {
       listener.onComplete();
     }
   }
diff --git a/java/com/android/dialer/app/calllog/ClearCallLogDialog.java b/java/com/android/dialer/app/calllog/ClearCallLogDialog.java
index 5c3d4d9..c100fa0 100644
--- a/java/com/android/dialer/app/calllog/ClearCallLogDialog.java
+++ b/java/com/android/dialer/app/calllog/ClearCallLogDialog.java
@@ -19,8 +19,6 @@
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.FragmentManager;
 import android.app.ProgressDialog;
 import android.content.ContentResolver;
 import android.content.Context;
@@ -30,6 +28,8 @@
 import android.os.Bundle;
 import android.provider.CallLog.Calls;
 import android.support.annotation.NonNull;
+import android.support.v4.app.DialogFragment;
+import android.support.v4.app.FragmentManager;
 import com.android.dialer.app.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.phonenumbercache.CachedNumberLookupService;
diff --git a/java/com/android/dialer/app/contactinfo/ExpirableCacheHeadlessFragment.java b/java/com/android/dialer/app/contactinfo/ExpirableCacheHeadlessFragment.java
index aed51b5..c413391 100644
--- a/java/com/android/dialer/app/contactinfo/ExpirableCacheHeadlessFragment.java
+++ b/java/com/android/dialer/app/contactinfo/ExpirableCacheHeadlessFragment.java
@@ -42,6 +42,11 @@
   }
 
   @NonNull
+  public static ExpirableCacheHeadlessFragment attach(@NonNull Fragment fragment) {
+    return attach(fragment.getChildFragmentManager());
+  }
+
+  @NonNull
   private static ExpirableCacheHeadlessFragment attach(FragmentManager fragmentManager) {
     ExpirableCacheHeadlessFragment fragment =
         (ExpirableCacheHeadlessFragment) fragmentManager.findFragmentByTag(FRAGMENT_TAG);
diff --git a/java/com/android/dialer/app/dialpad/DialpadFragment.java b/java/com/android/dialer/app/dialpad/DialpadFragment.java
index 3cd3ac2..3c49dba 100644
--- a/java/com/android/dialer/app/dialpad/DialpadFragment.java
+++ b/java/com/android/dialer/app/dialpad/DialpadFragment.java
@@ -20,8 +20,6 @@
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.Fragment;
 import android.content.BroadcastReceiver;
 import android.content.ContentResolver;
 import android.content.Context;
@@ -44,6 +42,8 @@
 import android.provider.Settings;
 import android.support.annotation.VisibleForTesting;
 import android.support.design.widget.FloatingActionButton;
+import android.support.v4.app.DialogFragment;
+import android.support.v4.app.Fragment;
 import android.support.v4.content.ContextCompat;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
diff --git a/java/com/android/dialer/app/dialpad/SmartDialCursorLoader.java b/java/com/android/dialer/app/dialpad/SmartDialCursorLoader.java
index a0c8b18..a849f6a 100644
--- a/java/com/android/dialer/app/dialpad/SmartDialCursorLoader.java
+++ b/java/com/android/dialer/app/dialpad/SmartDialCursorLoader.java
@@ -16,10 +16,10 @@
 
 package com.android.dialer.app.dialpad;
 
-import android.content.AsyncTaskLoader;
 import android.content.Context;
 import android.database.Cursor;
 import android.database.MatrixCursor;
+import android.support.v4.content.AsyncTaskLoader;
 import com.android.contacts.common.list.PhoneNumberListAdapter.PhoneQuery;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.database.Database;
diff --git a/java/com/android/dialer/app/filterednumber/BlockedNumbersAdapter.java b/java/com/android/dialer/app/filterednumber/BlockedNumbersAdapter.java
index dbd4e86..503b4c4 100644
--- a/java/com/android/dialer/app/filterednumber/BlockedNumbersAdapter.java
+++ b/java/com/android/dialer/app/filterednumber/BlockedNumbersAdapter.java
@@ -15,9 +15,9 @@
  */
 package com.android.dialer.app.filterednumber;
 
-import android.app.FragmentManager;
 import android.content.Context;
 import android.database.Cursor;
+import android.support.v4.app.FragmentManager;
 import android.telephony.PhoneNumberUtils;
 import android.view.View;
 import com.android.contacts.common.ContactPhotoManager;
diff --git a/java/com/android/dialer/app/filterednumber/BlockedNumbersFragment.java b/java/com/android/dialer/app/filterednumber/BlockedNumbersFragment.java
index f53a458..cb56db8 100644
--- a/java/com/android/dialer/app/filterednumber/BlockedNumbersFragment.java
+++ b/java/com/android/dialer/app/filterednumber/BlockedNumbersFragment.java
@@ -15,15 +15,15 @@
  */
 package com.android.dialer.app.filterednumber;
 
-import android.app.ListFragment;
-import android.app.LoaderManager;
 import android.content.Context;
-import android.content.CursorLoader;
-import android.content.Loader;
 import android.database.Cursor;
 import android.graphics.drawable.ColorDrawable;
 import android.os.Bundle;
 import android.support.v4.app.ActivityCompat;
+import android.support.v4.app.ListFragment;
+import android.support.v4.app.LoaderManager;
+import android.support.v4.content.CursorLoader;
+import android.support.v4.content.Loader;
 import android.support.v7.app.ActionBar;
 import android.support.v7.app.AppCompatActivity;
 import android.view.LayoutInflater;
@@ -71,8 +71,8 @@
         (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     getListView().addHeaderView(inflater.inflate(R.layout.blocked_number_header, null));
     getListView().addFooterView(inflater.inflate(R.layout.blocked_number_footer, null));
-    //replace the icon for add number with LetterTileDrawable(), so it will have identical style
-    ImageView addNumberIcon = (ImageView) getActivity().findViewById(R.id.add_number_icon);
+    // replace the icon for add number with LetterTileDrawable(), so it will have identical style
+    ImageView addNumberIcon = getActivity().findViewById(R.id.add_number_icon);
     LetterTileDrawable drawable = new LetterTileDrawable(getResources());
     drawable.setLetter(ADD_BLOCKED_NUMBER_ICON_LETTER);
     drawable.setColor(
@@ -83,11 +83,11 @@
     if (mAdapter == null) {
       mAdapter =
           BlockedNumbersAdapter.newBlockedNumbersAdapter(
-              getContext(), getActivity().getFragmentManager());
+              getContext(), getActivity().getSupportFragmentManager());
     }
     setListAdapter(mAdapter);
 
-    blockedNumbersText = (TextView) getListView().findViewById(R.id.blocked_number_text_view);
+    blockedNumbersText = getListView().findViewById(R.id.blocked_number_text_view);
     migratePromoView = getListView().findViewById(R.id.migrate_promo);
     getListView().findViewById(R.id.migrate_promo_allow_button).setOnClickListener(this);
     mImportSettings = getListView().findViewById(R.id.import_settings);
@@ -98,7 +98,7 @@
     getListView().findViewById(R.id.view_numbers_button).setOnClickListener(this);
     getListView().findViewById(R.id.add_number_linear_layout).setOnClickListener(this);
 
-    footerText = (TextView) getActivity().findViewById(R.id.blocked_number_footer_textview);
+    footerText = getActivity().findViewById(R.id.blocked_number_footer_textview);
     mVoicemailEnabledChecker = new VisualVoicemailEnabledChecker(getContext(), this);
     mVoicemailEnabledChecker.asyncUpdate();
     updateActiveVoicemailProvider();
diff --git a/java/com/android/dialer/app/filterednumber/BlockedNumbersSettingsActivity.java b/java/com/android/dialer/app/filterednumber/BlockedNumbersSettingsActivity.java
index 9310fcb..b944e63 100644
--- a/java/com/android/dialer/app/filterednumber/BlockedNumbersSettingsActivity.java
+++ b/java/com/android/dialer/app/filterednumber/BlockedNumbersSettingsActivity.java
@@ -46,12 +46,12 @@
   public void showManagementUi() {
     BlockedNumbersFragment fragment =
         (BlockedNumbersFragment)
-            getFragmentManager().findFragmentByTag(TAG_BLOCKED_MANAGEMENT_FRAGMENT);
+            getSupportFragmentManager().findFragmentByTag(TAG_BLOCKED_MANAGEMENT_FRAGMENT);
     if (fragment == null) {
       fragment = new BlockedNumbersFragment();
     }
 
-    getFragmentManager()
+    getSupportFragmentManager()
         .beginTransaction()
         .replace(R.id.blocked_numbers_activity_container, fragment, TAG_BLOCKED_MANAGEMENT_FRAGMENT)
         .commit();
@@ -63,7 +63,7 @@
   public void showSearchUi() {
     BlockedListSearchFragment fragment =
         (BlockedListSearchFragment)
-            getFragmentManager().findFragmentByTag(TAG_BLOCKED_SEARCH_FRAGMENT);
+            getSupportFragmentManager().findFragmentByTag(TAG_BLOCKED_SEARCH_FRAGMENT);
     if (fragment == null) {
       fragment = new BlockedListSearchFragment();
       fragment.setHasOptionsMenu(false);
@@ -71,7 +71,7 @@
       fragment.setDirectorySearchEnabled(false);
     }
 
-    getFragmentManager()
+    getSupportFragmentManager()
         .beginTransaction()
         .replace(R.id.blocked_numbers_activity_container, fragment, TAG_BLOCKED_SEARCH_FRAGMENT)
         .addToBackStack(null)
@@ -87,12 +87,12 @@
   public void showNumbersToImportPreviewUi() {
     ViewNumbersToImportFragment fragment =
         (ViewNumbersToImportFragment)
-            getFragmentManager().findFragmentByTag(TAG_VIEW_NUMBERS_TO_IMPORT_FRAGMENT);
+            getSupportFragmentManager().findFragmentByTag(TAG_VIEW_NUMBERS_TO_IMPORT_FRAGMENT);
     if (fragment == null) {
       fragment = new ViewNumbersToImportFragment();
     }
 
-    getFragmentManager()
+    getSupportFragmentManager()
         .beginTransaction()
         .replace(
             R.id.blocked_numbers_activity_container, fragment, TAG_VIEW_NUMBERS_TO_IMPORT_FRAGMENT)
@@ -112,8 +112,8 @@
   @Override
   public void onBackPressed() {
     // TODO: Achieve back navigation without overriding onBackPressed.
-    if (getFragmentManager().getBackStackEntryCount() > 0) {
-      getFragmentManager().popBackStack();
+    if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
+      getSupportFragmentManager().popBackStack();
     } else {
       super.onBackPressed();
     }
diff --git a/java/com/android/dialer/app/filterednumber/NumbersAdapter.java b/java/com/android/dialer/app/filterednumber/NumbersAdapter.java
index d98395e..800ea23 100644
--- a/java/com/android/dialer/app/filterednumber/NumbersAdapter.java
+++ b/java/com/android/dialer/app/filterednumber/NumbersAdapter.java
@@ -15,10 +15,10 @@
  */
 package com.android.dialer.app.filterednumber;
 
-import android.app.FragmentManager;
 import android.content.Context;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.support.v4.app.FragmentManager;
 import android.text.BidiFormatter;
 import android.text.TextDirectionHeuristics;
 import android.text.TextUtils;
@@ -57,10 +57,9 @@
   }
 
   public void updateView(View view, String number, String countryIso) {
-    final TextView callerName = (TextView) view.findViewById(R.id.caller_name);
-    final TextView callerNumber = (TextView) view.findViewById(R.id.caller_number);
-    final QuickContactBadge quickContactBadge =
-        (QuickContactBadge) view.findViewById(R.id.quick_contact_photo);
+    final TextView callerName = view.findViewById(R.id.caller_name);
+    final TextView callerNumber = view.findViewById(R.id.caller_number);
+    final QuickContactBadge quickContactBadge = view.findViewById(R.id.quick_contact_photo);
     quickContactBadge.setOverlay(null);
     if (CompatUtils.hasPrioritizedMimeType()) {
       quickContactBadge.setPrioritizedMimeType(Phone.CONTENT_ITEM_TYPE);
diff --git a/java/com/android/dialer/app/filterednumber/ViewNumbersToImportAdapter.java b/java/com/android/dialer/app/filterednumber/ViewNumbersToImportAdapter.java
index 313efb4..45ea29e 100644
--- a/java/com/android/dialer/app/filterednumber/ViewNumbersToImportAdapter.java
+++ b/java/com/android/dialer/app/filterednumber/ViewNumbersToImportAdapter.java
@@ -15,9 +15,9 @@
  */
 package com.android.dialer.app.filterednumber;
 
-import android.app.FragmentManager;
 import android.content.Context;
 import android.database.Cursor;
+import android.support.v4.app.FragmentManager;
 import android.view.View;
 import com.android.contacts.common.ContactPhotoManager;
 import com.android.dialer.app.R;
diff --git a/java/com/android/dialer/app/filterednumber/ViewNumbersToImportFragment.java b/java/com/android/dialer/app/filterednumber/ViewNumbersToImportFragment.java
index d45f61e..6eca03b 100644
--- a/java/com/android/dialer/app/filterednumber/ViewNumbersToImportFragment.java
+++ b/java/com/android/dialer/app/filterednumber/ViewNumbersToImportFragment.java
@@ -15,14 +15,14 @@
  */
 package com.android.dialer.app.filterednumber;
 
-import android.app.ListFragment;
-import android.app.LoaderManager;
 import android.content.Context;
-import android.content.CursorLoader;
-import android.content.Loader;
 import android.database.Cursor;
 import android.os.Bundle;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.support.v4.app.ListFragment;
+import android.support.v4.app.LoaderManager;
+import android.support.v4.content.CursorLoader;
+import android.support.v4.content.Loader;
 import android.support.v7.app.ActionBar;
 import android.support.v7.app.AppCompatActivity;
 import android.view.LayoutInflater;
@@ -49,7 +49,7 @@
     if (mAdapter == null) {
       mAdapter =
           ViewNumbersToImportAdapter.newViewNumbersToImportAdapter(
-              getContext(), getActivity().getFragmentManager());
+              getContext(), getActivity().getSupportFragmentManager());
     }
     setListAdapter(mAdapter);
   }
diff --git a/java/com/android/dialer/app/list/AllContactsFragment.java b/java/com/android/dialer/app/list/AllContactsFragment.java
index 32a99e7..19c2452 100644
--- a/java/com/android/dialer/app/list/AllContactsFragment.java
+++ b/java/com/android/dialer/app/list/AllContactsFragment.java
@@ -22,13 +22,12 @@
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
-import android.content.Loader;
 import android.content.pm.PackageManager;
 import android.database.Cursor;
 import android.net.Uri;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.QuickContact;
-import android.support.v13.app.FragmentCompat;
+import android.support.v4.content.Loader;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -51,8 +50,7 @@
 
 /** Fragments to show all contacts with phone numbers. */
 public class AllContactsFragment extends ContactEntryListFragment<ContactEntryListAdapter>
-    implements OnEmptyViewActionButtonClickedListener,
-        FragmentCompat.OnRequestPermissionsResultCallback {
+    implements OnEmptyViewActionButtonClickedListener {
 
   private static final int READ_CONTACTS_PERMISSION_REQUEST_CODE = 1;
 
@@ -182,8 +180,7 @@
       LogUtil.i(
           "AllContactsFragment.onEmptyViewActionButtonClicked",
           "Requesting permissions: " + Arrays.toString(deniedPermissions));
-      FragmentCompat.requestPermissions(
-          this, deniedPermissions, READ_CONTACTS_PERMISSION_REQUEST_CODE);
+      requestPermissions(deniedPermissions, READ_CONTACTS_PERMISSION_REQUEST_CODE);
     } else {
       // Add new contact
       DialerUtils.startActivityWithErrorToast(
diff --git a/java/com/android/dialer/app/list/DialtactsPagerAdapter.java b/java/com/android/dialer/app/list/DialtactsPagerAdapter.java
index 822aa78..52519f8 100644
--- a/java/com/android/dialer/app/list/DialtactsPagerAdapter.java
+++ b/java/com/android/dialer/app/list/DialtactsPagerAdapter.java
@@ -16,11 +16,11 @@
 
 package com.android.dialer.app.list;
 
-import android.app.Fragment;
-import android.app.FragmentManager;
 import android.content.Context;
 import android.support.annotation.IntDef;
-import android.support.v13.app.FragmentPagerAdapter;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentPagerAdapter;
 import android.view.ViewGroup;
 import com.android.dialer.app.calllog.CallLogFragment;
 import com.android.dialer.app.calllog.VisualVoicemailCallLogFragment;
diff --git a/java/com/android/dialer/app/list/ListsFragment.java b/java/com/android/dialer/app/list/ListsFragment.java
index 3f03db1..8e94385 100644
--- a/java/com/android/dialer/app/list/ListsFragment.java
+++ b/java/com/android/dialer/app/list/ListsFragment.java
@@ -22,7 +22,6 @@
 import static com.android.dialer.app.list.DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL;
 import static com.android.dialer.app.list.DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL;
 
-import android.app.Fragment;
 import android.content.SharedPreferences;
 import android.database.ContentObserver;
 import android.database.Cursor;
@@ -31,6 +30,7 @@
 import android.os.Trace;
 import android.preference.PreferenceManager;
 import android.provider.VoicemailContract;
+import android.support.v4.app.Fragment;
 import android.support.v4.view.ViewPager.OnPageChangeListener;
 import android.view.LayoutInflater;
 import android.view.View;
diff --git a/java/com/android/dialer/app/list/OldSpeedDialFragment.java b/java/com/android/dialer/app/list/OldSpeedDialFragment.java
index 05d017b..986c51c 100644
--- a/java/com/android/dialer/app/list/OldSpeedDialFragment.java
+++ b/java/com/android/dialer/app/list/OldSpeedDialFragment.java
@@ -21,17 +21,16 @@
 import android.animation.AnimatorSet;
 import android.animation.ObjectAnimator;
 import android.app.Activity;
-import android.app.Fragment;
-import android.app.LoaderManager;
-import android.content.CursorLoader;
-import android.content.Loader;
 import android.content.pm.PackageManager;
 import android.database.Cursor;
 import android.graphics.Rect;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Trace;
-import android.support.v13.app.FragmentCompat;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.LoaderManager;
+import android.support.v4.content.CursorLoader;
+import android.support.v4.content.Loader;
 import android.support.v4.util.LongSparseArray;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -62,8 +61,7 @@
 public class OldSpeedDialFragment extends Fragment
     implements OnItemClickListener,
         PhoneFavoritesTileAdapter.OnDataSetChangedForAnimationListener,
-        EmptyContentView.OnEmptyViewActionButtonClickedListener,
-        FragmentCompat.OnRequestPermissionsResultCallback {
+        EmptyContentView.OnEmptyViewActionButtonClickedListener {
 
   private static final int READ_CONTACTS_PERMISSION_REQUEST_CODE = 1;
 
@@ -411,8 +409,7 @@
       LogUtil.i(
           "OldSpeedDialFragment.onEmptyViewActionButtonClicked",
           "Requesting permissions: " + Arrays.toString(deniedPermissions));
-      FragmentCompat.requestPermissions(
-          this, deniedPermissions, READ_CONTACTS_PERMISSION_REQUEST_CODE);
+      requestPermissions(deniedPermissions, READ_CONTACTS_PERMISSION_REQUEST_CODE);
     } else {
       // Switch tabs
       ((HostInterface) activity).showAllContactsTab();
diff --git a/java/com/android/dialer/app/list/RegularSearchFragment.java b/java/com/android/dialer/app/list/RegularSearchFragment.java
index 728948b..c45f783 100644
--- a/java/com/android/dialer/app/list/RegularSearchFragment.java
+++ b/java/com/android/dialer/app/list/RegularSearchFragment.java
@@ -19,7 +19,6 @@
 
 import android.app.Activity;
 import android.content.pm.PackageManager;
-import android.support.v13.app.FragmentCompat;
 import android.view.LayoutInflater;
 import android.view.ViewGroup;
 import com.android.contacts.common.list.ContactEntryListAdapter;
@@ -35,8 +34,7 @@
 import java.util.Arrays;
 
 public class RegularSearchFragment extends SearchFragment
-    implements OnEmptyViewActionButtonClickedListener,
-        FragmentCompat.OnRequestPermissionsResultCallback {
+    implements OnEmptyViewActionButtonClickedListener {
 
   public static final int PERMISSION_REQUEST_CODE = 1;
 
@@ -123,7 +121,7 @@
         LogUtil.i(
             "RegularSearchFragment.onEmptyViewActionButtonClicked",
             "Requesting permissions: " + Arrays.toString(deniedPermissions));
-        FragmentCompat.requestPermissions(this, deniedPermissions, PERMISSION_REQUEST_CODE);
+        requestPermissions(deniedPermissions, PERMISSION_REQUEST_CODE);
       }
     }
   }
diff --git a/java/com/android/dialer/app/list/SearchFragment.java b/java/com/android/dialer/app/list/SearchFragment.java
index 00a2708..a8a7347 100644
--- a/java/com/android/dialer/app/list/SearchFragment.java
+++ b/java/com/android/dialer/app/list/SearchFragment.java
@@ -19,10 +19,10 @@
 import android.animation.AnimatorInflater;
 import android.animation.AnimatorListenerAdapter;
 import android.app.Activity;
-import android.app.DialogFragment;
 import android.content.Intent;
 import android.content.res.Configuration;
 import android.content.res.Resources;
+import android.support.v4.app.DialogFragment;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
diff --git a/java/com/android/dialer/app/list/SmartDialSearchFragment.java b/java/com/android/dialer/app/list/SmartDialSearchFragment.java
index 2ebc06b..f2969cf 100644
--- a/java/com/android/dialer/app/list/SmartDialSearchFragment.java
+++ b/java/com/android/dialer/app/list/SmartDialSearchFragment.java
@@ -22,10 +22,9 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.content.Loader;
 import android.database.Cursor;
 import android.os.Bundle;
-import android.support.v13.app.FragmentCompat;
+import android.support.v4.content.Loader;
 import com.android.contacts.common.list.ContactEntryListAdapter;
 import com.android.dialer.app.R;
 import com.android.dialer.app.dialpad.SmartDialCursorLoader;
@@ -38,8 +37,7 @@
 
 /** Implements a fragment to load and display SmartDial search results. */
 public class SmartDialSearchFragment extends SearchFragment
-    implements EmptyContentView.OnEmptyViewActionButtonClickedListener,
-        FragmentCompat.OnRequestPermissionsResultCallback {
+    implements EmptyContentView.OnEmptyViewActionButtonClickedListener {
 
   private static final int CALL_PHONE_PERMISSION_REQUEST_CODE = 1;
 
@@ -136,8 +134,7 @@
       LogUtil.i(
           "SmartDialSearchFragment.onEmptyViewActionButtonClicked",
           "Requesting permissions: " + Arrays.toString(deniedPermissions));
-      FragmentCompat.requestPermissions(
-          this, deniedPermissions, CALL_PHONE_PERMISSION_REQUEST_CODE);
+      requestPermissions(deniedPermissions, CALL_PHONE_PERMISSION_REQUEST_CODE);
     }
   }
 
diff --git a/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java b/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
index 5c9bc01..856767c 100644
--- a/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
+++ b/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
@@ -37,6 +37,7 @@
 import android.support.annotation.MainThread;
 import android.support.annotation.Nullable;
 import android.support.annotation.VisibleForTesting;
+import android.support.v4.app.FragmentActivity;
 import android.support.v4.content.FileProvider;
 import android.text.TextUtils;
 import android.util.Pair;
@@ -127,7 +128,7 @@
   protected MediaPlayer mMediaPlayer;
   // Used to run async tasks that need to interact with the UI.
   protected AsyncTaskExecutor mAsyncTaskExecutor;
-  private Activity mActivity;
+  private FragmentActivity mActivity;
   private PlaybackView mView;
   private int mPosition;
   private boolean mIsPlaying;
@@ -175,7 +176,7 @@
    */
   @MainThread
   public static VoicemailPlaybackPresenter getInstance(
-      Activity activity, Bundle savedInstanceState) {
+      FragmentActivity activity, Bundle savedInstanceState) {
     if (sInstance == null) {
       sInstance = new VoicemailPlaybackPresenter(activity);
     }
@@ -193,7 +194,7 @@
 
   /** Update variables which are activity-dependent or state-dependent. */
   @MainThread
-  protected void init(Activity activity, Bundle savedInstanceState) {
+  protected void init(FragmentActivity activity, Bundle savedInstanceState) {
     Assert.isMainThread();
     mActivity = activity;
     mContext = activity;
@@ -220,7 +221,7 @@
       }
       shareVoicemailExecutor =
           DialerExecutors.createUiTaskBuilder(
-                  mActivity.getFragmentManager(), "test", new ShareVoicemailWorker())
+                  mActivity.getSupportFragmentManager(), "test", new ShareVoicemailWorker())
               .onSuccess(
                   output -> {
                     if (output == null) {
diff --git a/java/com/android/dialer/blocking/BlockNumberDialogFragment.java b/java/com/android/dialer/blocking/BlockNumberDialogFragment.java
index 7ef77c4..7fedf51 100644
--- a/java/com/android/dialer/blocking/BlockNumberDialogFragment.java
+++ b/java/com/android/dialer/blocking/BlockNumberDialogFragment.java
@@ -18,14 +18,14 @@
 
 import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.FragmentManager;
 import android.content.ContentValues;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.net.Uri;
 import android.os.Bundle;
 import android.support.design.widget.Snackbar;
+import android.support.v4.app.DialogFragment;
+import android.support.v4.app.FragmentManager;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 import android.view.View;
diff --git a/java/com/android/dialer/blocking/BlockReportSpamDialogs.java b/java/com/android/dialer/blocking/BlockReportSpamDialogs.java
index b5f81fc..ed30344 100644
--- a/java/com/android/dialer/blocking/BlockReportSpamDialogs.java
+++ b/java/com/android/dialer/blocking/BlockReportSpamDialogs.java
@@ -19,11 +19,11 @@
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.DialogFragment;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
+import android.support.v4.app.DialogFragment;
 import android.view.View;
 import android.widget.CheckBox;
 import android.widget.CompoundButton;
@@ -99,7 +99,7 @@
   }
 
   /** Contains the common attributes between all block/unblock/report dialog fragments. */
-  private static class CommonDialogsFragment extends DialogFragment {
+  public static class CommonDialogsFragment extends DialogFragment {
 
     /** The number to display in the dialog title. */
     protected String mDisplayNumber;
diff --git a/java/com/android/dialer/blocking/FilteredNumberCompat.java b/java/com/android/dialer/blocking/FilteredNumberCompat.java
index e104c4f..033f09c 100644
--- a/java/com/android/dialer/blocking/FilteredNumberCompat.java
+++ b/java/com/android/dialer/blocking/FilteredNumberCompat.java
@@ -17,7 +17,6 @@
 package com.android.dialer.blocking;
 
 import android.annotation.TargetApi;
-import android.app.FragmentManager;
 import android.content.ContentUris;
 import android.content.ContentValues;
 import android.content.Context;
@@ -31,6 +30,7 @@
 import android.provider.BlockedNumberContract.BlockedNumbers;
 import android.support.annotation.Nullable;
 import android.support.annotation.VisibleForTesting;
+import android.support.v4.app.FragmentManager;
 import android.telecom.TelecomManager;
 import android.telephony.PhoneNumberUtils;
 import com.android.dialer.common.LogUtil;
diff --git a/java/com/android/dialer/blocking/MigrateBlockedNumbersDialogFragment.java b/java/com/android/dialer/blocking/MigrateBlockedNumbersDialogFragment.java
index 76e50b3..1bf9175 100644
--- a/java/com/android/dialer/blocking/MigrateBlockedNumbersDialogFragment.java
+++ b/java/com/android/dialer/blocking/MigrateBlockedNumbersDialogFragment.java
@@ -18,10 +18,10 @@
 
 import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.DialogFragment;
 import android.content.DialogInterface;
 import android.content.DialogInterface.OnShowListener;
 import android.os.Bundle;
+import android.support.v4.app.DialogFragment;
 import android.view.View;
 import com.android.dialer.blocking.BlockedNumbersMigrator.Listener;
 import java.util.Objects;
diff --git a/java/com/android/dialer/callcomposer/CallComposerActivity.java b/java/com/android/dialer/callcomposer/CallComposerActivity.java
index 49d3f9f..2f652e4 100644
--- a/java/com/android/dialer/callcomposer/CallComposerActivity.java
+++ b/java/com/android/dialer/callcomposer/CallComposerActivity.java
@@ -333,7 +333,7 @@
       // If the current data is not a copy, make one.
       if (!galleryComposerFragment.selectedDataIsCopy()) {
         DialerExecutors.createUiTaskBuilder(
-                getFragmentManager(),
+                getSupportFragmentManager(),
                 "copyAndResizeImageToSend",
                 new CopyAndResizeImageWorker(this.getApplicationContext()))
             .onSuccess(
diff --git a/java/com/android/dialer/callcomposer/GalleryComposerFragment.java b/java/com/android/dialer/callcomposer/GalleryComposerFragment.java
index 01e0674..eeeb2f6 100644
--- a/java/com/android/dialer/callcomposer/GalleryComposerFragment.java
+++ b/java/com/android/dialer/callcomposer/GalleryComposerFragment.java
@@ -125,7 +125,7 @@
     copyAndResizeImage =
         executorFactory
             .createUiTaskBuilder(
-                getActivity().getFragmentManager(),
+                getChildFragmentManager(),
                 "copyAndResizeImage",
                 new CopyAndResizeImageWorker(getActivity().getApplicationContext()))
             .onSuccess(
diff --git a/java/com/android/dialer/calldetails/CallDetailsActivity.java b/java/com/android/dialer/calldetails/CallDetailsActivity.java
index 411006c..07254e3 100644
--- a/java/com/android/dialer/calldetails/CallDetailsActivity.java
+++ b/java/com/android/dialer/calldetails/CallDetailsActivity.java
@@ -143,7 +143,7 @@
 
   @Override
   public void reportCallId(String number) {
-    ReportDialogFragment.newInstance(number).show(getFragmentManager(), null);
+    ReportDialogFragment.newInstance(number).show(getSupportFragmentManager(), null);
   }
 
   @Override
diff --git a/java/com/android/dialer/calldetails/ReportDialogFragment.java b/java/com/android/dialer/calldetails/ReportDialogFragment.java
index 0861c9d..0f3c78e 100644
--- a/java/com/android/dialer/calldetails/ReportDialogFragment.java
+++ b/java/com/android/dialer/calldetails/ReportDialogFragment.java
@@ -18,11 +18,11 @@
 
 import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.DialogFragment;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
+import android.support.v4.app.DialogFragment;
 import android.support.v4.util.Pair;
 import android.view.LayoutInflater;
 import android.view.View;
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogFragment.java b/java/com/android/dialer/calllog/ui/NewCallLogFragment.java
index 17fcf19..cdd09a6 100644
--- a/java/com/android/dialer/calllog/ui/NewCallLogFragment.java
+++ b/java/com/android/dialer/calllog/ui/NewCallLogFragment.java
@@ -15,12 +15,12 @@
  */
 package com.android.dialer.calllog.ui;
 
-import android.app.Fragment;
-import android.app.LoaderManager.LoaderCallbacks;
-import android.content.CursorLoader;
-import android.content.Loader;
 import android.database.Cursor;
 import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.LoaderManager.LoaderCallbacks;
+import android.support.v4.content.CursorLoader;
+import android.support.v4.content.Loader;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.view.LayoutInflater;
@@ -70,7 +70,7 @@
     refreshAnnotatedCallLogTask =
         dialerExecutorFactory
             .createUiTaskBuilder(
-                getFragmentManager(),
+                getChildFragmentManager(),
                 "NewCallLogFragment.refreshAnnotatedCallLog",
                 component.getRefreshAnnotatedCallLogWorker())
             .build();
diff --git a/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java b/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java
index 82e517d..5600abb 100644
--- a/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java
+++ b/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java
@@ -16,10 +16,10 @@
 
 package com.android.dialer.common.concurrent;
 
-import android.app.FragmentManager;
 import android.os.AsyncTask;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
+import android.support.v4.app.FragmentManager;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor.Builder;
diff --git a/java/com/android/dialer/common/concurrent/DialerExecutorFactory.java b/java/com/android/dialer/common/concurrent/DialerExecutorFactory.java
index 82f8c7c..6a99fb0 100644
--- a/java/com/android/dialer/common/concurrent/DialerExecutorFactory.java
+++ b/java/com/android/dialer/common/concurrent/DialerExecutorFactory.java
@@ -16,8 +16,8 @@
 
 package com.android.dialer.common.concurrent;
 
-import android.app.FragmentManager;
 import android.support.annotation.NonNull;
+import android.support.v4.app.FragmentManager;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 
 /**
@@ -31,8 +31,10 @@
 public interface DialerExecutorFactory {
 
   /**
-   * Must be called from onCreate of your activity or fragment.
+   * Must be called from onCreate of your Activity or Fragment.
    *
+   * @param fragmentManager the FragmentManager owned by your Activity or Fragment (i.e. not the
+   *     FragmentManager that contains your Fragment)
    * @param taskId used for the headless fragment ID and task ID
    * @param worker a function executed on a worker thread which accepts an {@link InputT} and
    *     returns an {@link OutputT}. It should ideally not be an inner class of your (meaning it
diff --git a/java/com/android/dialer/common/concurrent/DialerExecutors.java b/java/com/android/dialer/common/concurrent/DialerExecutors.java
index 148d866..f1764c2 100644
--- a/java/com/android/dialer/common/concurrent/DialerExecutors.java
+++ b/java/com/android/dialer/common/concurrent/DialerExecutors.java
@@ -16,8 +16,8 @@
 
 package com.android.dialer.common.concurrent;
 
-import android.app.FragmentManager;
 import android.support.annotation.NonNull;
+import android.support.v4.app.FragmentManager;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 
diff --git a/java/com/android/dialer/common/concurrent/DialerUiTaskFragment.java b/java/com/android/dialer/common/concurrent/DialerUiTaskFragment.java
index 7f2a5a0..300b394 100644
--- a/java/com/android/dialer/common/concurrent/DialerUiTaskFragment.java
+++ b/java/com/android/dialer/common/concurrent/DialerUiTaskFragment.java
@@ -16,13 +16,13 @@
 
 package com.android.dialer.common.concurrent;
 
-import android.app.Fragment;
-import android.app.FragmentManager;
 import android.os.Bundle;
 import android.support.annotation.MainThread;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.annotation.WorkerThread;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor.FailureListener;
diff --git a/java/com/android/dialer/contactsfragment/ContactsCursorLoader.java b/java/com/android/dialer/contactsfragment/ContactsCursorLoader.java
index a22f7eb..6ea66f7 100644
--- a/java/com/android/dialer/contactsfragment/ContactsCursorLoader.java
+++ b/java/com/android/dialer/contactsfragment/ContactsCursorLoader.java
@@ -17,8 +17,8 @@
 package com.android.dialer.contactsfragment;
 
 import android.content.Context;
-import android.content.CursorLoader;
 import android.provider.ContactsContract.Contacts;
+import android.support.v4.content.CursorLoader;
 
 /** Cursor Loader for {@link ContactsFragment}. */
 final class ContactsCursorLoader extends CursorLoader {
diff --git a/java/com/android/dialer/contactsfragment/ContactsFragment.java b/java/com/android/dialer/contactsfragment/ContactsFragment.java
index e627718..1f21422 100644
--- a/java/com/android/dialer/contactsfragment/ContactsFragment.java
+++ b/java/com/android/dialer/contactsfragment/ContactsFragment.java
@@ -16,15 +16,14 @@
 
 package com.android.dialer.contactsfragment;
 
-import android.app.Fragment;
-import android.app.LoaderManager.LoaderCallbacks;
-import android.content.Loader;
 import android.content.pm.PackageManager;
 import android.database.Cursor;
 import android.os.Bundle;
 import android.provider.ContactsContract.Contacts;
 import android.support.annotation.Nullable;
-import android.support.v13.app.FragmentCompat;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.LoaderManager.LoaderCallbacks;
+import android.support.v4.content.Loader;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.support.v7.widget.RecyclerView.Recycler;
@@ -206,8 +205,7 @@
         LogUtil.i(
             "ContactsFragment.onEmptyViewActionButtonClicked",
             "Requesting permissions: " + Arrays.toString(deniedPermissions));
-        FragmentCompat.requestPermissions(
-            this, deniedPermissions, READ_CONTACTS_PERMISSION_REQUEST_CODE);
+        requestPermissions(deniedPermissions, READ_CONTACTS_PERMISSION_REQUEST_CODE);
       }
 
     } else if (emptyContentView.getActionLabel()
diff --git a/java/com/android/dialer/interactions/PhoneNumberInteraction.java b/java/com/android/dialer/interactions/PhoneNumberInteraction.java
index ef468a9..ea7d841 100644
--- a/java/com/android/dialer/interactions/PhoneNumberInteraction.java
+++ b/java/com/android/dialer/interactions/PhoneNumberInteraction.java
@@ -20,14 +20,9 @@
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.FragmentManager;
 import android.content.Context;
-import android.content.CursorLoader;
 import android.content.DialogInterface;
 import android.content.Intent;
-import android.content.Loader;
-import android.content.Loader.OnLoadCompleteListener;
 import android.content.pm.PackageManager;
 import android.database.Cursor;
 import android.net.Uri;
@@ -42,7 +37,13 @@
 import android.support.annotation.IntDef;
 import android.support.annotation.VisibleForTesting;
 import android.support.v4.app.ActivityCompat;
+import android.support.v4.app.DialogFragment;
+import android.support.v4.app.FragmentActivity;
+import android.support.v4.app.FragmentManager;
 import android.support.v4.content.ContextCompat;
+import android.support.v4.content.CursorLoader;
+import android.support.v4.content.Loader;
+import android.support.v4.content.Loader.OnLoadCompleteListener;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -350,7 +351,7 @@
   }
 
   private void showDisambiguationDialog(ArrayList<PhoneItem> phoneList) {
-    final Activity activity = (Activity) mContext;
+    final FragmentActivity activity = (FragmentActivity) mContext;
     if (activity.isDestroyed()) {
       // Check whether the activity is still running
       LogUtil.i("PhoneNumberInteraction.showDisambiguationDialog", "activity destroyed");
@@ -358,7 +359,7 @@
     }
     try {
       PhoneDisambiguationDialogFragment.show(
-          activity.getFragmentManager(),
+          activity.getSupportFragmentManager(),
           phoneList,
           mInteractionType,
           mIsVideoCall,
diff --git a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java
index c72f28b..f50bb46 100644
--- a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java
+++ b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java
@@ -17,9 +17,9 @@
 package com.android.dialer.searchfragment.cp2;
 
 import android.content.Context;
-import android.content.CursorLoader;
 import android.database.Cursor;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.support.v4.content.CursorLoader;
 import com.android.dialer.searchfragment.common.Projections;
 
 /** Cursor Loader for CP2 contacts. */
diff --git a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
index d20bb1f..561bcf9 100644
--- a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
+++ b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
@@ -16,12 +16,12 @@
 
 package com.android.dialer.searchfragment.list;
 
-import android.app.Fragment;
-import android.app.LoaderManager.LoaderCallbacks;
-import android.content.Loader;
 import android.database.Cursor;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.LoaderManager.LoaderCallbacks;
+import android.support.v4.content.Loader;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.view.LayoutInflater;
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursorLoader.java b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursorLoader.java
index 9f3193e..6b86960 100644
--- a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursorLoader.java
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursorLoader.java
@@ -17,9 +17,9 @@
 package com.android.dialer.searchfragment.nearbyplaces;
 
 import android.content.Context;
-import android.content.CursorLoader;
 import android.net.Uri;
 import android.provider.ContactsContract;
+import android.support.v4.content.CursorLoader;
 import com.android.contacts.common.extensions.PhoneDirectoryExtenderAccessor;
 import com.android.dialer.searchfragment.common.Projections;
 
diff --git a/java/com/android/dialer/speeddial/SpeedDialFragment.java b/java/com/android/dialer/speeddial/SpeedDialFragment.java
index c087439..c9252f5 100644
--- a/java/com/android/dialer/speeddial/SpeedDialFragment.java
+++ b/java/com/android/dialer/speeddial/SpeedDialFragment.java
@@ -16,9 +16,9 @@
 
 package com.android.dialer.speeddial;
 
-import android.app.Fragment;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
diff --git a/java/com/android/incallui/InCallActivityCommon.java b/java/com/android/incallui/InCallActivityCommon.java
index 4b0a3cd..4354936 100644
--- a/java/com/android/incallui/InCallActivityCommon.java
+++ b/java/com/android/incallui/InCallActivityCommon.java
@@ -226,7 +226,9 @@
 
       SelectPhoneAccountDialogFragment dialogFragment =
           (SelectPhoneAccountDialogFragment)
-              inCallActivity.getFragmentManager().findFragmentByTag(TAG_SELECT_ACCOUNT_FRAGMENT);
+              inCallActivity
+                  .getSupportFragmentManager()
+                  .findFragmentByTag(TAG_SELECT_ACCOUNT_FRAGMENT);
       if (dialogFragment != null) {
         dialogFragment.setListener(selectAccountListener);
       }
@@ -884,7 +886,7 @@
             selectAccountListener,
             waitingForAccountCall.getId());
     selectPhoneAccountDialogFragment.show(
-        inCallActivity.getFragmentManager(), TAG_SELECT_ACCOUNT_FRAGMENT);
+        inCallActivity.getSupportFragmentManager(), TAG_SELECT_ACCOUNT_FRAGMENT);
     return true;
   }
 }
diff --git a/java/com/android/incallui/spam/SpamNotificationActivity.java b/java/com/android/incallui/spam/SpamNotificationActivity.java
index ece0e49..2b8687d 100644
--- a/java/com/android/incallui/spam/SpamNotificationActivity.java
+++ b/java/com/android/incallui/spam/SpamNotificationActivity.java
@@ -197,7 +197,7 @@
                 }
               },
               dismissListener)
-          .show(getFragmentManager(), BlockReportSpamDialogs.NOT_SPAM_DIALOG_TAG);
+          .show(getSupportFragmentManager(), BlockReportSpamDialogs.NOT_SPAM_DIALOG_TAG);
     } else {
       reportNotSpamAndFinish(number, contactLookupResultType);
     }
@@ -222,7 +222,9 @@
                         }
                       },
                       dismissListener)
-                  .show(getFragmentManager(), BlockReportSpamDialogs.BLOCK_REPORT_SPAM_DIALOG_TAG);
+                  .show(
+                      getSupportFragmentManager(),
+                      BlockReportSpamDialogs.BLOCK_REPORT_SPAM_DIALOG_TAG);
             }
           });
     } else {
@@ -252,7 +254,7 @@
   /** Checks if the user has migrated to the new blocking and display a dialog if necessary. */
   private void maybeShowBlockNumberMigrationDialog(BlockedNumbersMigrator.Listener listener) {
     if (!FilteredNumberCompat.maybeShowBlockNumberMigrationDialog(
-        this, getFragmentManager(), listener)) {
+        this, getSupportFragmentManager(), listener)) {
       listener.onComplete();
     }
   }