客户需要开发者模式开启时,打开USB调试需要加入密码显示,我们的思路是在打开USB调试时弹出的弹框下方加入输入密码框。
字符串资源
路径:vendor/mediatek/proprietary/packages/apps/MtkSettings/res/values/strings.xml
<string name="student_password_error">wrong password</string>
<string name="student_hint_passwork">Please enter your password</string>
路径:vendor/mediatek/proprietary/packages/apps/MtkSettings/res/values-zh-rCN/strings.xml
<string name="student_password_error">密码错误</string>
<string name="student_hint_passwork">请输入密码</string>
我们通过相关字符串找到了弹框出现的代码?onCreateDialog
实际上代码中的布尔值studentSwitch 是动态的来开关这个功能 如果不需要可以默认写成true
String password 实际上就可以自定义成自己想要的密码
路径:vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/development/EnableAdbWarningDialog.java?? ?
//*/soda water studentmode usb passworkd
import android.widget.EditText;
import android.text.InputType;
import android.widget.LinearLayout;
import android.graphics.Color;
import android.widget.Toast;
import android.provider.Settings;
//*/
//此处重写创建弹框的方法
//*/soda water studentmode usb passworkd
private EditText input;
//*/
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
//*/soda water studentmode usb passworkd
boolean studentSwitch = Settings.Global.getInt(getContext().getContentResolver(), "student_model_switch", 0) != 0;
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.adb_warning_title);
if(studentSwitch){
LinearLayout layout = new LinearLayout(getContext());
layout.setOrientation(LinearLayout.VERTICAL);
input = new EditText(getActivity());
input.setHint(R.string.student_hint_passwork);
input.setInputType(InputType.TYPE_CLASS_NUMBER);
input.setTextColor(Color.BLACK);
int marginStartEnd = 50;
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
);
layoutParams.setMargins(marginStartEnd, 0, marginStartEnd, 0);
input.setLayoutParams(layoutParams);
layout.addView(input);
builder.setView(layout);
}
builder.setMessage(R.string.adb_warning_message)
.setPositiveButton(android.R.string.yes, this /* onClickListener */)
.setNegativeButton(android.R.string.no, this /* onClickListener */);
return builder.create();
}
//这里是点击确认时的监听 密码错误时我们弹出提示即可
@Override
public void onClick(DialogInterface dialog, int which) {
final AdbDialogHost host = (AdbDialogHost) getTargetFragment();
if (host == null) {
return;
}
if (which == DialogInterface.BUTTON_POSITIVE) {
//*/soda water studentmode usb passworkd
boolean studentSwitch = Settings.Global.getInt(getContext().getContentResolver(), "student_model_switch", 0) != 0;
String password = Settings.Global.getString(getContext().getContentResolver(), "student_password_global");
if(studentSwitch){
if((password != null && input != null && input.getText().toString().equals(password))){
host.onEnableAdbDialogConfirmed();
}else{
host.onEnableAdbDialogDismissed();
Toast.makeText(getContext(),R.string.student_password_error, Toast.LENGTH_SHORT).show();
}
}else{
host.onEnableAdbDialogConfirmed();
}
//*/
} else {
host.onEnableAdbDialogDismissed();
}
}