1560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovpackage foo.bar.fill; 2560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov 3560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.annotation.Nullable; 4560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.app.Activity; 5560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.app.assist.AssistStructure; 6560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.app.assist.AssistStructure.ViewNode; 7560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.content.Intent; 8560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.os.Bundle; 9560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.service.autofill.Dataset; 10560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.service.autofill.FillResponse; 11560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.view.View; 12560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.view.autofill.AutofillManager; 13560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.view.autofill.AutofillValue; 14560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.widget.Button; 15560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.widget.RemoteViews; 16560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov 17560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovpublic class AuthActivity extends Activity { 18560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov @Override 19560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov protected void onCreate(@Nullable Bundle savedInstanceState) { 20560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov super.onCreate(savedInstanceState); 21560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov 22560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov setContentView(R.layout.activity_main); 23560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov 24560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov AssistStructure structure = getIntent().getParcelableExtra( 25560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov AutofillManager.EXTRA_ASSIST_STRUCTURE); 26560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov 27560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov ViewNode username = FillService.findUsername(structure); 28560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov ViewNode password = FillService.findPassword(structure); 29560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov 30560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov final FillResponse response; 31560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov final Dataset dataset; 32560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov 33560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov if (FillService.TEST_RESPONSE_AUTH) { 34560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov RemoteViews presentation1 = new RemoteViews(getPackageName(), R.layout.list_item); 35560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov presentation1.setTextViewText(R.id.text1,FillService.DATASET1_NAME); 36560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov 37560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov RemoteViews presentation2 = new RemoteViews(getPackageName(), R.layout.list_item); 38560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov presentation2.setTextViewText(R.id.text1,FillService.DATASET2_NAME); 39560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov 40560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov response = new FillResponse.Builder() 41560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov .addDataset(new Dataset.Builder(presentation1) 42560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov .setValue(username.getAutofillId(), 43560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov AutofillValue.forText(FillService.DATASET1_USERNAME)) 44560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov .setValue(password.getAutofillId(), 45560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov AutofillValue.forText(FillService.DATASET1_PASSWORD)) 46560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov .build()) 47560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov .addDataset(new Dataset.Builder(presentation2) 48560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov .setValue(username.getAutofillId(), 49560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov AutofillValue.forText(FillService.DATASET2_USERNAME)) 50560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov .setValue(password.getAutofillId(), 51560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov AutofillValue.forText(FillService.DATASET2_PASSWORD)) 52560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov .build()) 53560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov .build(); 54560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov dataset = null; 55560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov } else { 56560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov RemoteViews presentation = new RemoteViews(getPackageName(), R.layout.list_item); 57560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov presentation.setTextViewText(R.id.text1,FillService.DATASET2_NAME); 58560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov 59560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov dataset = new Dataset.Builder(presentation) 60560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov .setValue(username.getAutofillId(), 61560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov AutofillValue.forText(FillService.DATASET5_USERNAME)) 62560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov .setValue(password.getAutofillId(), 63560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov AutofillValue.forText(FillService.DATASET5_PASSWORD)) 64560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov .build(); 65560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov response = null; 66560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov } 67560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov 68560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov Button button = (Button) findViewById(R.id.confirm); 69560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov button.setOnClickListener((View v) -> { 70560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov Intent result = new Intent(); 71560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov if (FillService.TEST_RESPONSE_AUTH) { 72560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov result.putExtra(AutofillManager.EXTRA_AUTHENTICATION_RESULT, response); 73560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov } else { 74560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov result.putExtra(AutofillManager.EXTRA_AUTHENTICATION_RESULT, dataset); 75560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov } 76560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov setResult(RESULT_OK, result); 77560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov finish(); 78560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov }); 79560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov } 80560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov} 81