package foo.bar.fill; import android.annotation.Nullable; import android.app.Activity; import android.app.assist.AssistStructure; import android.app.assist.AssistStructure.ViewNode; import android.content.Intent; import android.os.Bundle; import android.service.autofill.Dataset; import android.service.autofill.FillResponse; import android.view.View; import android.view.autofill.AutofillManager; import android.view.autofill.AutofillValue; import android.widget.Button; import android.widget.RemoteViews; public class AuthActivity extends Activity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); AssistStructure structure = getIntent().getParcelableExtra( AutofillManager.EXTRA_ASSIST_STRUCTURE); ViewNode username = FillService.findUsername(structure); ViewNode password = FillService.findPassword(structure); final FillResponse response; final Dataset dataset; if (FillService.TEST_RESPONSE_AUTH) { RemoteViews presentation1 = new RemoteViews(getPackageName(), R.layout.list_item); presentation1.setTextViewText(R.id.text1,FillService.DATASET1_NAME); RemoteViews presentation2 = new RemoteViews(getPackageName(), R.layout.list_item); presentation2.setTextViewText(R.id.text1,FillService.DATASET2_NAME); response = new FillResponse.Builder() .addDataset(new Dataset.Builder(presentation1) .setValue(username.getAutofillId(), AutofillValue.forText(FillService.DATASET1_USERNAME)) .setValue(password.getAutofillId(), AutofillValue.forText(FillService.DATASET1_PASSWORD)) .build()) .addDataset(new Dataset.Builder(presentation2) .setValue(username.getAutofillId(), AutofillValue.forText(FillService.DATASET2_USERNAME)) .setValue(password.getAutofillId(), AutofillValue.forText(FillService.DATASET2_PASSWORD)) .build()) .build(); dataset = null; } else { RemoteViews presentation = new RemoteViews(getPackageName(), R.layout.list_item); presentation.setTextViewText(R.id.text1,FillService.DATASET2_NAME); dataset = new Dataset.Builder(presentation) .setValue(username.getAutofillId(), AutofillValue.forText(FillService.DATASET5_USERNAME)) .setValue(password.getAutofillId(), AutofillValue.forText(FillService.DATASET5_PASSWORD)) .build(); response = null; } Button button = (Button) findViewById(R.id.confirm); button.setOnClickListener((View v) -> { Intent result = new Intent(); if (FillService.TEST_RESPONSE_AUTH) { result.putExtra(AutofillManager.EXTRA_AUTHENTICATION_RESULT, response); } else { result.putExtra(AutofillManager.EXTRA_AUTHENTICATION_RESULT, dataset); } setResult(RESULT_OK, result); finish(); }); } }