diff --git a/src/com/android/settings/widget/VideoPreference.java b/src/com/android/settings/widget/VideoPreference.java
index 1af9065..11a6478 100644
--- a/src/com/android/settings/widget/VideoPreference.java
+++ b/src/com/android/settings/widget/VideoPreference.java
@@ -80,6 +80,7 @@
         try {
             // if these are already set that means they were set dynamically and don't need
             // to be loaded from xml
+            mAnimationAvailable = false;
             mAnimationId = mAnimationId == 0
                 ? attributes.getResourceId(R.styleable.VideoPreference_animation, 0)
                 : mAnimationId;
@@ -91,6 +92,7 @@
                 ? attributes.getResourceId(R.styleable.VideoPreference_preview, 0)
                 : mPreviewResource;
             if (mPreviewResource == 0 && mAnimationId == 0) {
+                setVisible(false);
                 return;
             }
             initMediaPlayer();
@@ -250,6 +252,10 @@
         }
     }
 
+    public boolean isAnimationAvailable() {
+        return mAnimationAvailable;
+    }
+
     public boolean isVideoPaused() {
         return mVideoPaused;
     }
diff --git a/src/com/android/settings/widget/VideoPreferenceController.java b/src/com/android/settings/widget/VideoPreferenceController.java
index 78a837c..488a554 100644
--- a/src/com/android/settings/widget/VideoPreferenceController.java
+++ b/src/com/android/settings/widget/VideoPreferenceController.java
@@ -37,13 +37,14 @@
 
     @Override
     public int getAvailabilityStatus() {
-        return AVAILABLE_UNSEARCHABLE;
+        return mVideoPreference.isAnimationAvailable() ?
+                AVAILABLE_UNSEARCHABLE : UNSUPPORTED_ON_DEVICE;
     }
 
     @Override
     public void displayPreference(PreferenceScreen screen) {
-        super.displayPreference(screen);
         mVideoPreference = screen.findPreference(getPreferenceKey());
+        super.displayPreference(screen);
     }
 
     @Override
diff --git a/tests/robotests/src/com/android/settings/widget/VideoPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/widget/VideoPreferenceControllerTest.java
index 7fa2d28..89d006a 100644
--- a/tests/robotests/src/com/android/settings/widget/VideoPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/widget/VideoPreferenceControllerTest.java
@@ -17,10 +17,13 @@
 package com.android.settings.widget;
 
 import static com.android.settings.core.BasePreferenceController.AVAILABLE_UNSEARCHABLE;
+import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
 
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.mockito.Mockito.anyBoolean;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
@@ -33,6 +36,7 @@
 import org.mockito.MockitoAnnotations;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
+import org.robolectric.util.ReflectionHelpers;
 
 @RunWith(RobolectricTestRunner.class)
 public class VideoPreferenceControllerTest {
@@ -52,11 +56,28 @@
     }
 
     @Test
-    public void getAvailabilityStatus_isAlwaysAvailable() {
+    public void getAvailabilityStatus_isAvailableUnsearchable() {
+        final VideoPreference videoPreference = mock(VideoPreference.class);
+
+        // Assign mock object to mVideoPreference in controller
+        ReflectionHelpers.setField(mController, "mVideoPreference", videoPreference);
+        doReturn(true).when(videoPreference).isAnimationAvailable();
+
         assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE_UNSEARCHABLE);
     }
 
     @Test
+    public void getAvailabilityStatus_isUnsupportedOnDevice() {
+        final VideoPreference videoPreference = mock(VideoPreference.class);
+
+        // Assign mock object to mVideoPreference in controller
+        ReflectionHelpers.setField(mController, "mVideoPreference", videoPreference);
+        doReturn(false).when(videoPreference).isAnimationAvailable();
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
     public void onPause_shouldCallOnViewInvisibleOnPrefernece() {
         mController.displayPreference(mScreen);
 
