Skip to content
This repository has been archived by the owner on Nov 8, 2023. It is now read-only.

Commit

Permalink
Merge "Limit bluetooth broadcast password to single byte characters" …
Browse files Browse the repository at this point in the history
…into main
  • Loading branch information
Treehugger Robot authored and Gerrit Code Review committed Sep 4, 2023
2 parents cd34a5f + a1ae2b1 commit abe5010
Showing 1 changed file with 61 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,16 @@
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.InputFilter;
import android.text.InputType;
import android.text.Spanned;
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
Expand Down Expand Up @@ -468,9 +474,64 @@ private void launchBroadcastCodeDialog(BluetoothBroadcastSourcePreference pref)
.create();

alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
addTextWatcher(alertDialog, editText);
alertDialog.show();
updateBtnState(alertDialog, false);
}

private void addTextWatcher(AlertDialog alertDialog, EditText editText) {
if (alertDialog == null || editText == null) {
return;
}
final InputFilter[] filter = new InputFilter[] {mInputFilter};
editText.setFilters(filter);
editText.setInputType(InputType.TYPE_CLASS_TEXT
| InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
TextWatcher bCodeTextWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// Do nothing
}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// Do nothing
}

@Override
public void afterTextChanged(Editable s) {
boolean breakBroadcastCodeRuleTextLengthLessThanMin =
s.length() > 0 && s.toString().getBytes().length < 4;
boolean breakBroadcastCodeRuleTextLengthMoreThanMax =
s.toString().getBytes().length > 16;
boolean breakRule = breakBroadcastCodeRuleTextLengthLessThanMin
|| breakBroadcastCodeRuleTextLengthMoreThanMax;
updateBtnState(alertDialog, !breakRule);
}
};
editText.addTextChangedListener(bCodeTextWatcher);
}

private void updateBtnState(AlertDialog alertDialog, boolean isEnable) {
Button positiveBtn = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
if (positiveBtn != null) {
positiveBtn.setEnabled(isEnable ? true : false);
}
}

private InputFilter mInputFilter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
byte[] bytes = source.toString().getBytes(StandardCharsets.UTF_8);
if (bytes.length == source.length()) {
return source;
} else {
return "";
}
}
};

private void handleSearchStarted() {
cacheRemoveAllPrefs(mBroadcastSourceListCategory);
addConnectedSourcePreference();
Expand Down

0 comments on commit abe5010

Please sign in to comment.