diff --git a/src/com/android/launcher3/compat/AppWidgetManagerCompatVO.java b/src/com/android/launcher3/compat/AppWidgetManagerCompatVO.java
index bde8b78..1c48a13 100644
--- a/src/com/android/launcher3/compat/AppWidgetManagerCompatVO.java
+++ b/src/com/android/launcher3/compat/AppWidgetManagerCompatVO.java
@@ -16,17 +16,12 @@
 
 package com.android.launcher3.compat;
 
-import android.appwidget.AppWidgetManager;
 import android.appwidget.AppWidgetProviderInfo;
 import android.content.Context;
-import android.os.UserHandle;
-import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
-import android.util.Log;
 
 import com.android.launcher3.util.PackageUserKey;
 
-import java.lang.reflect.InvocationTargetException;
 import java.util.List;
 
 class AppWidgetManagerCompatVO extends AppWidgetManagerCompatVL {
@@ -40,14 +35,7 @@
         if (packageUser == null) {
             return super.getAllProviders(null);
         }
-        // TODO: don't use reflection once API and sdk are ready.
-        try {
-            return (List<AppWidgetProviderInfo>) AppWidgetManager.class.getMethod(
-                    "getInstalledProvidersForPackage", String.class, UserHandle.class)
-                    .invoke(mAppWidgetManager, packageUser.mPackageName, packageUser.mUser);
-        } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
-            Log.e("AppWidgetManagerCompat", "Failed to call new API", e);
-        }
-        return super.getAllProviders(packageUser);
+        return mAppWidgetManager.getInstalledProvidersForPackage(packageUser.mPackageName,
+                packageUser.mUser);
     }
 }
diff --git a/src/com/android/launcher3/notification/NotificationInfo.java b/src/com/android/launcher3/notification/NotificationInfo.java
index 0b41743..1a93e11 100644
--- a/src/com/android/launcher3/notification/NotificationInfo.java
+++ b/src/com/android/launcher3/notification/NotificationInfo.java
@@ -25,7 +25,6 @@
 import android.graphics.drawable.Icon;
 import android.os.Bundle;
 import android.service.notification.StatusBarNotification;
-import android.util.Log;
 import android.view.View;
 
 import com.android.launcher3.Launcher;
@@ -66,20 +65,7 @@
         title = notification.extras.getCharSequence(Notification.EXTRA_TITLE);
         text = notification.extras.getCharSequence(Notification.EXTRA_TEXT);
 
-        // TODO(b/36855196): use getBadgeIconType() without reflection
-        int badgeIcon = Notification.BADGE_ICON_NONE;
-        try {
-            badgeIcon = (int) Notification.class.getMethod("getBadgeIconType").invoke(notification);
-        } catch (Exception e) {
-            Log.w("NotificationInfo", "getBadgeIconType() failed", e);
-            // Try the old name, getBadgeIcon(), instead.
-            try {
-                badgeIcon = (int) Notification.class.getMethod("getBadgeIcon").invoke(notification);
-            } catch (Exception e1) {
-                Log.e("NotificationInfo", "getBadgeIcon() failed", e);
-            }
-        }
-        mBadgeIcon = badgeIcon;
+        mBadgeIcon = notification.getBadgeIconType();
         // Load the icon. Since it is backed by ashmem, we won't copy the entire bitmap
         // into our process as long as we don't touch it and it exists in systemui.
         Icon icon = mBadgeIcon == Notification.BADGE_ICON_SMALL ? null : notification.getLargeIcon();
