diff --git a/input/autofill/AutofillFramework/afservice/src/main/java/com/example/android/autofill/service/MyAutofillService.java b/input/autofill/AutofillFramework/afservice/src/main/java/com/example/android/autofill/service/MyAutofillService.java
index ace2cef..e9cdd6c 100644
--- a/input/autofill/AutofillFramework/afservice/src/main/java/com/example/android/autofill/service/MyAutofillService.java
+++ b/input/autofill/AutofillFramework/afservice/src/main/java/com/example/android/autofill/service/MyAutofillService.java
@@ -147,15 +147,7 @@
     private void fetchDataAndGenerateResponse(
             HashMap<String, FieldTypeWithHeuristics> fieldTypesByAutofillHint, boolean responseAuth,
             boolean datasetAuth, boolean manual, FillCallback callback) {
-        if (manual) {
-            IntentSender sender = ManualActivity.getManualIntentSenderForResponse(this);
-            RemoteViews remoteViews = RemoteViewsHelper.viewsWithNoAuth(getPackageName(),
-                    getString(R.string.autofill_manual_prompt));
-            FillResponse response = mResponseAdapter.buildManualResponse(sender, remoteViews);
-            if (response != null) {
-                callback.onSuccess(response);
-            }
-        } else if (responseAuth) {
+        if (responseAuth) {
             // If the entire Autofill Response is authenticated, AuthActivity is used
             // to generate Response.
             IntentSender sender = AuthActivity.getAuthIntentSenderForResponse(this);
@@ -170,9 +162,22 @@
                     new DataCallback<List<DatasetWithFilledAutofillFields>>() {
                         @Override
                         public void onLoaded(List<DatasetWithFilledAutofillFields> datasets) {
-                            FillResponse response = mResponseAdapter.buildResponse(
-                                    fieldTypesByAutofillHint, datasets, datasetAuth);
-                            callback.onSuccess(response);
+                            if ((datasets == null || datasets.isEmpty()) && manual) {
+                                IntentSender sender = ManualActivity
+                                        .getManualIntentSenderForResponse(MyAutofillService.this);
+                                RemoteViews remoteViews = RemoteViewsHelper.viewsWithNoAuth(
+                                        getPackageName(),
+                                        getString(R.string.autofill_manual_prompt));
+                                FillResponse response = mResponseAdapter.buildManualResponse(sender,
+                                        remoteViews);
+                                if (response != null) {
+                                    callback.onSuccess(response);
+                                }
+                            } else {
+                                FillResponse response = mResponseAdapter.buildResponse(
+                                        fieldTypesByAutofillHint, datasets, datasetAuth);
+                                callback.onSuccess(response);
+                            }
                         }
 
                         @Override
